Code Bye

复制构造函数的调用问题

在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&) 才是复制构造函数

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


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明复制构造函数的调用问题