鱼C论坛

 找回密码
 立即注册
查看: 2353|回复: 2

关于C++string类、cout对象的问题

[复制链接]
发表于 2014-8-2 02:05:04 | 显示全部楼层 |阅读模式
5鱼币
新学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中预定义了一个对象吗?

最佳答案

查看完整内容

问题一:std::string类包含对=运算符的重载,它就是这么赋值的。 问题二:std::cout是std::ostream类的对象。是C++标准库预先定义好的。你如果翻开头文件就会发现有一个不叫ostream但是叫做std::basic_ostream的模板类,这就是ostream的原型。 英语好的话建议参考http://www.cplusplus.com/reference/,会很有用的。 另外可以看看我文章里面发的用C++写的C++的解析器——UnderC C/C++ Interpreter C++解析器的C++头文件,会 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-2 02:05:05 | 显示全部楼层
本帖最后由 andalousie 于 2014-8-2 09:06 编辑

问题一:std::string类包含对=运算符的重载,它就是这么赋值的。
string& operator= (char *str);
问题二:std::cout是std::ostream类的对象。是C++标准库预先定义好的。你如果翻开<ostream>头文件就会发现有一个不叫ostream但是叫做std::basic_ostream<class charT, class charT, class traits = char_traits<charT> >的模板类,这就是ostream的原型。
英语好的话建议参考http://www.cplusplus.com/reference/,会很有用的。
另外可以看看我文章里面发的用C++写的C++的解析器——UnderC C/C++ Interpreter
C++解析器的C++头文件,会更容易看懂。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-30 20:03:50 | 显示全部楼层
{:1_1:}{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 04:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表