复制构造函数,必须显式的定义每一个需要复制的变量,如果没有显式指定的话,就会使用合成默认构造函数的方式处理。
- #include <iostream>
- #include <string>
- using namespace std;
- class test{
- public:
- test(){ //使用复制构造函数,但是如果没在复制构造函数中定义的呢?定义了默认构造函数,根据结果,发现没有调用。说明只是调用了类本身的构造函数。在这里是string类
- num = 1;
- str = "unix";
- }
- test(int num, string sq):num(num), str(sq) {};
- test(const test &m): num(m.num){}; //若加上str(m.str)就可以正常了。
- void show(){
- cout<<"str "<<str<<" num "<<num<<endl;
- }
- private:
- string str;
- int num;
- };
- int main(){
- class test tes1(1,"china");
- class test tes2(tes1);
- tes2.show();
- return 0;
- }
显示的结果是
str num 1 而不是str china num 1
如果改变复制构造函数就可以有china了
阅读(571) | 评论(0) | 转发(1) |