C++的一个构造函数问题

QQ2627707977 |浏览135次
收藏|2022/11/13 17:01

满意回答

2022/11/13 17:22

你的第一个程序很正常MyClass obj1(1), obj2(2);//调用两次构造,输出11MyClass obj3(obj1);//调用拷贝构造函数输出2obj1 = obj2;//调用=的重载,输出3最后调用三个类的析构,输出444而第二个程序MyClass obj3(obj1);//它只会调用缺省的拷贝构造函数,因为你的定义MyClass(const MyClass *x)中,参数x是指针,而obj3(obj1);中的obj是类非指针,参数不匹配,当然不会调用它,你要用MyClass obj3(&obj1);才会调用它同样obj1 = obj2也不会调用MyClass &operator=(const MyClass *x),要用obj1 = &obj2;才可以也就是程序二中,你的拷贝构造函数及操作符重载根本没用,你要用指针达到程序一效果,要这样:

whoami1978

其他回答(0)
0人关注该问题
+1

 加载中...