class A
{
public:
// explicit A(int i){a = i; cout << "constructor" << endl;}
A(int i){a = i; cout << "constructor" << endl;}
A(const A& ra){a = ra.a; cout << "copy constructor" << endl; ++numOfCopy;}
void static getNumOfCopy(){cout << numOfCopy << endl;}
private:
int a;
static int numOfCopy;
};
int A::numOfCopy;
int main()
{
cout << "line 1" << endl;
A a = 3; //或者数据成员为public的时候,
//可以的不通过构造函数而直接使用这种赋值
//本例通过单参构造函数了,本质进行了类型转换,
//非explicit的单参构造函数本身可以作一个类型转换函数
cout << "line 2" << endl;
A b = A(3); //调用构造函数
cout << "line 3" << endl;
A c = A(b); //一个多余的类型转换
cout << "line 4" << endl;
A::getNumOfCopy();
return 0;
}
{
public:
// explicit A(int i){a = i; cout << "constructor" << endl;}
A(int i){a = i; cout << "constructor" << endl;}
A(const A& ra){a = ra.a; cout << "copy constructor" << endl; ++numOfCopy;}
void static getNumOfCopy(){cout << numOfCopy << endl;}
private:
int a;
static int numOfCopy;
};
int A::numOfCopy;
int main()
{
cout << "line 1" << endl;
A a = 3; //或者数据成员为public的时候,
//可以的不通过构造函数而直接使用这种赋值
//本例通过单参构造函数了,本质进行了类型转换,
//非explicit的单参构造函数本身可以作一个类型转换函数
cout << "line 2" << endl;
A b = A(3); //调用构造函数
cout << "line 3" << endl;
A c = A(b); //一个多余的类型转换
cout << "line 4" << endl;
A::getNumOfCopy();
return 0;
}