C++ string类、cout对象的疑问
新学C++,对于类和类对象有些迷糊:如下面的代码:#include<string>#include<iostream>usingnamespacestd;intmain(...
新学C++,对于类和类对象有些迷糊:
如下面的代码:
#include <string>
#include<iostream>
using namespace std;
int main()
{
string sentence="你好,朋友!";
cout<<sentence<<endl;
return 0;
}
问题1、string做为一个C++标准库中定义的类,sentence是这个类的对象,做为类对象,一是利用构造函数赋初值,二是利用复制构造函数赋值,三是通过成员函数赋值,。。。。怎么能够直接将一个字符串赋给一个类对象呢?当然,如果string是基本类型则我明白是可以这样赋值的,但string类有成员函数呀,能算基本类型吗?难道string sentence="你好,朋友!"是先定义一个对象,然后利用重载运算符=赋值吗?
问题2、根据书上说法,cout是iostream类的一个对象。我想问的是,对象不是要根据类来定义吗<如:string sentence>,我没有定义,怎么就有这个对象了呢?难道在iostream中预定义了一个对象吗?; 展开
如下面的代码:
#include <string>
#include<iostream>
using namespace std;
int main()
{
string sentence="你好,朋友!";
cout<<sentence<<endl;
return 0;
}
问题1、string做为一个C++标准库中定义的类,sentence是这个类的对象,做为类对象,一是利用构造函数赋初值,二是利用复制构造函数赋值,三是通过成员函数赋值,。。。。怎么能够直接将一个字符串赋给一个类对象呢?当然,如果string是基本类型则我明白是可以这样赋值的,但string类有成员函数呀,能算基本类型吗?难道string sentence="你好,朋友!"是先定义一个对象,然后利用重载运算符=赋值吗?
问题2、根据书上说法,cout是iostream类的一个对象。我想问的是,对象不是要根据类来定义吗<如:string sentence>,我没有定义,怎么就有这个对象了呢?难道在iostream中预定义了一个对象吗?; 展开
1个回答
展开全部
你自己的回答都是正确的。其中问题二,我想说,cin和cout(还有cerr),是对象名,不是类名,也就是说,它们仨是对象,以std的命名空间定义在了iostream文件中,具有全局作用域。既然这三个是对象,那它们肯定是有类型的,不过这个类型是什么对我们的意义不大,你可以试试用右键Goto definition的功能看看它们的类型是什么。假如你真的知道了它的类型,那么在主函数中自己定义一个这个类型的对象,然后像用cin cout一样用你自己定义的这个,估计也是可以的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询