《Effective C++》读书笔记05:c++默默为您编写的函数(2)
上面的例子是理想的情况,就是每个变量都是可以直接赋值过去的,没有引用类型和const类型,假如有这两种类型的成员变量,则会报错
1 class NameObject
2 {
3 public:
4 NameObject(string& name, const int& value);
5 private:
6 string& nameValue; //引用类型
7 const int objectValue; //const类型
8 };
9
10 int main()
11 {
12 string newDog("DaHuang");
13 string oldDog("XiaoGuai");
14 NameObject p(newDog, 2);
15 NameObject s(oldDog, 36);
16 p = s; //错误,不能更改non-static的引用成员的指向,不能更改const成员的值
17 //所以编译器提示不能 使用default assignment,并报错
18 return 0;
19 system("PAUSE");
20 }
所以,在存在这样的成员变量时,尽可能自己定义coyy构造函数和copy assignment函数





