在c++primer上说有4中方法可以调用复制构造方法,可是本人只能用一种
http://blog.csdn.net/justperseve/article/details/51465265 这个链接里面有代码和c++primer的4中方法的截图,希望大家帮忙解决一下,谢谢
http://blog.csdn.net/justperseve/article/details/51465265 这个链接里面有代码和c++primer的4中方法的截图,希望大家帮忙解决一下,谢谢
解决方案
5
分得这么麻烦,还有直接手动调用, replacement new,现在C++11还有复用其他构造函数。
都和构造函数调用相关,不是又要多几种。
分为显式和隐式就行了,尽量用显式构造。
都和构造函数调用相关,不是又要多几种。
分为显式和隐式就行了,尽量用显式构造。
15
T& operator=(const T&) 不是复制构造函数,而是赋值运算符
T(const T&) 才是复制构造函数
T(const T&) 才是复制构造函数
5
p.~Person(); C++ 不是 placement new 的对象,不可这么用
另外三种,也都是可以的
不过 变量名,要改变
要么加大括号,以限定作用域
以免命名冲突
另外三种,也都是可以的
不过 变量名,要改变
要么加大括号,以限定作用域
以免命名冲突
16
class A { public: A(){} A( A& n){} }; void Fn1(A a) { } A Fn2() { A a; return a; } void main() { A a; A b(a); //情形1: 用对象初始化另一个对象时 A c = a; //情形2: 通过赋值运算,用对象初始化另一个对象,此时触发的是拷贝构造函数,而不是operator= Fn1( a ); //情形3: 对象做为参数传递时 Fn2(); //情形4: 对象做为函数返回值时,拷贝构造函数将会在函数内部被调用 }
7