c++中拷贝构造函数与“=运算符重载”

来源:互联网 发布:windows10视频剪辑软件 编辑:程序博客网 时间:2024/06/05 16:30
本文只是演示何时调用拷贝构造函数,何时用=运算符重载
不考虑类的实现正确。


问题 

     SomeClass a; 
     SomeClass b = a; //调用的是拷贝构造函数, 还是=运算符重载?

演示代码 ::

    #include <iostream>    class TC    {    public:                TC(){std::cout << "TC() \n";}        ~TC(){std::cout << "~TC()\n";}        TC(TC &a){std::cout << "TC(TC &a)\n";}        TC& operator= (TC a){std::cout <<" TC= \n" ; return *this;}            private:        int x;            };    int main(int argc, const char * argv[])    {        // insert code here...        TC a;        TC b = a;        b = a;        return 0;    }



输出 ::

    TC() 
    TC(TC &a)
    TC(TC &a)
     TC= 
    ~TC()
    ~TC()
    ~TC()

分析 :
    TC a ; //这个不用考虑 ,对应 TC() 
    TC b = a; // 这个对应 TC(TC &a) ,
    b = a; // 这个对应      TC(TC &a) 和 TC=  . 分为两步,第一步 a到参数a,属于定义,拷贝构造. 然后内部执行.

    a,b 两个,加上一个参数 T a. 总共3次构造.
     

0 0
原创粉丝点击