关于C++string类、cout对象的问题
新学C++,对于类和类对象有些迷糊:如下面的代码:
#include <string>
#include<iostream>
using namespace std;
intmain()
{
stringsentence="你好,朋友!";
cout<<sentence<<endl;
return 0;
}
问题1、string做为一个C++标准库中定义的类,sentence是这个类的对象,做为类对象,一是利用构造函数赋初值,二是利用复制构造函数赋值,三是通过成员函数赋值,。。。。怎么能够直接将一个字符串赋给一个类对象呢?当然,如果string是基本类型则我明白是可以这样赋值的,但string类有成员函数呀,能算基本类型吗?难道stringsentence="你好,朋友!"是先定义一个对象,然后利用重载运算符=赋值吗?
问题2、根据书上说法,cout是iostream类的一个对象。我想问的是,对象不是要根据类来定义吗<如:stringsentence>,我没有定义,怎么就有这个对象了呢?难道在iostream中预定义了一个对象吗? 本帖最后由 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++头文件,会更容易看懂。 {:1_1:}{:1_1:}
页:
[1]