Code Bye

operator= 哪错了 C++ 运算符重载

 

#include <iostream>
using namespace::std;
class Test
{
public:
    Test()
    {
        std::cout<<“构造 “<<std::endl;
    }
    ~Test()
    {
        std::cout<<“析构 “<<std::endl;
    }
    
 const Test & operator = (const Test &t)
    {
         std::cout<<“operator= “<<std::endl;
        return *this;
    }
};

int main()
{
    Test t ;
    Test t1 = t;
    return 0;
}

//为什么没有打印  operator=
//环境 xcode6.2  

5分
哪个老师,哪本书告诉你
 Test t1 = t; 是调用operator=的??!
10分
class Test
{
public:
	Test()
	{
		std::cout<<"构造 "<<std::endl;
	}
	Test(const Test & t)
	{
		std::cout << "拷贝构造" << std::endl;
	}
	~Test()
	{
		std::cout<<"析构 "<<std::endl;
	}

	const Test & operator = (const Test &t)
	{
		std::cout<<"operator= "<<std::endl;
		return *this;
	}
};

运行结果:
构造
拷贝构造
析构
析构

5分
test t1=t  调用的是拷贝构造函数
引用 1 楼 yangyunzhao 的回复:

哪个老师,哪本书告诉你
 Test t1 = t; 是调用operator=的??!

原来如此,调用的是拷贝构造函数 
 Test t ;
    Test t1 =t;
    t1 = t;
这样就出来了。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明operator= 哪错了 C++ 运算符重载