单参构造函数的使用

来源:互联网 发布:手机系统之家数据恢复 编辑:程序博客网 时间:2024/06/05 03:46
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;
}