http://baike.baidu.com/view/1266959.htm
http://blog.csdn.net/fornormandy/article/details/79512
http://baike.baidu.com/link?url=SJme9xg2t2Pzv64Uy7cbH7sckhC4UiA-AhLFmSKPWW69PFYTmdeJ-rp4nzRu-C3YdPWT3kJAgpvn_h2cPZJAnehqsB-y9PrNWGsfT3lVeAi
#include <iostream>
#include <stdio.h>
using namespace std;
class C
{
public:
int i;
//explicit C(const C& arg):i(10)
C(const C& arg) // an explicit copy constructor
{
i = 10;
printf("in the copy constructor\n");
}
explicit C(int i ) // an explicit constructor
{
printf("\nin the constructor");
}
C()
{
i = 0;
}
};
C f(C c)
{
// C2558
c.i = 2;
printf("%d\n",c.i);
return c; // first call to copy constructor
}
int main()
{
C c;
c = f(c); // c is copied 临时拷贝
printf("%d\n",c.i);
}
explicit关键字禁止隐式转换、禁止拷贝构造
本文深入探讨了C++中显式构造函数和拷贝构造函数的使用方法及注意事项。通过具体示例代码展示了如何定义显式构造函数以避免隐式类型转换,并解释了拷贝构造函数的工作原理。

212

被折叠的 条评论
为什么被折叠?



