构造函数, 拷贝构造函数, 赋值操作重载各种情况实例演示

来源:互联网 发布:linux退出命令 编辑:程序博客网 时间:2024/06/10 02:13
构造函数, 拷贝构造函数, 赋值操作重载各种情况实例演示:#include <iostream>#include <string>using namespace std;void trace(string str){cout << str <<endl;}class CTest{private:int m_i;string m_str;public:CTest(int i = 0, string str = "C++ Test");//重载构造函数CTest(CTest& test);//拷贝构造函数~CTest(){}//析构函数void showData();CTest& operator=(CTest& test);//赋值函数操作符重载};CTest::CTest(int i, string str){m_i = i;m_str = str;}CTest::CTest(CTest& test){this->m_i = test.m_i;this->m_str = test.m_str;cout << "call copy construct function" <<endl;}void CTest::showData(){cout << this->m_i <<endl;cout << this->m_str <<endl;}CTest& CTest::operator=(CTest& test){this->m_i = test.m_i;this->m_str = test.m_str;cout << "赋值操作符重载" <<endl;return *this;}int main(int argc, char *argv[]){trace("创建CTest对象:test");CTest test(10);test.showData();//CTest test2 = test;//调用到拷贝构造函数!!!, 因为有新对象创建trace("创建CTest对象:test2");CTest test2(20);test2.showData();trace("赋值test2=test");test2 = test;//没有新对象创建, 调用的是操作符重载方法, 如果没重载=, 就是内存的简单拷贝test2.showData();return 0;}
原创粉丝点击