一个default constructor,copy constructor,destructor(Function) .
assignment operator and a pair of address of operator 并且全部是public的。
那么一个空的class Empty() 相当于
class Empty()
{
public:
Empty();
Empty(const Empty& rhs);
~Empty(); //virtual or not Answer non-virtual
Empty & operator =(const Empty& rhs);
Empty * operator &(); //address of operators
const Empty* operator&() const;
}
只有这些函数被需要的时候,它们才会被编译器产生出来!
如果打算为内含引用或常量 成员的类支持赋值动作,必须自己定义,不能用缺省的赋值运算符。
有个事实就是绝对没有办法控制“不同编译单元中的非局部静态对象”的初始化次序!
什么样的变量可以称为非局部静态变量?
1,全局或名字空间变量
2,类内的静态变量
3,文件内的变量
问题描述:同是非局部静态对象,一个要用到另一个,那么必须保证另一个在之前被初始化了,但,编译器是无法保证这点的!如何解救呢?
使用返回局部静态对象引用的函数代替 好处:1,保证了初始化 2,使用时静态对象才被初始化 ,即,如果有的静态变量没有被使用,便不需付出构造和析构的成本。 //单件模式(Singleton Pattern)
<string.h> <string> <cstring>
1,旧式的C表头文件 2,披上STD外衣的C++头文件 3,披上STD外衣的旧式C头文件
string不是类而是个类模板,真正型别是basic_string<char>