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中预定义了一个对象吗?;
展开
 我来答
daviddyn
2014-08-02 · TA获得超过556个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:161万
展开全部
你自己的回答都是正确的。其中问题二,我想说,cin和cout(还有cerr),是对象名,不是类名,也就是说,它们仨是对象,以std的命名空间定义在了iostream文件中,具有全局作用域。既然这三个是对象,那它们肯定是有类型的,不过这个类型是什么对我们的意义不大,你可以试试用右键Goto definition的功能看看它们的类型是什么。假如你真的知道了它的类型,那么在主函数中自己定义一个这个类型的对象,然后像用cin cout一样用你自己定义的这个,估计也是可以的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式