#ifndef _TEST__ #define _TEST__ #include #include class Test { public: Test(); // 默认构造函数 ~Test(); // 默认析构函数 Test(const Test &ex); // 拷贝构造函数,默认形式 Test( Test &ex); // 拷贝构造函数 //Test(Test ex); // 不合法,防止递归无限调用 Test& operator = (const Test& ex); // 赋值运算,默认形式 Test& operator = (Test& ex); // 赋值运算 //Test& operator = (const Test ex); // 赋值运算,合法,引用作为重载条件,调用是需要转型 //Test operator = (const Test& ex); // 赋值运算,合法,但是返回不能作为重载条件 Test& operator = (int k); // 赋值运算 // ... static Test func1(Test ex); static Test& func2(Test &ex); private: int key; std::string str; static int num; // 用于计数 }; #endif Test::Test() { key = ++num; std::cout<<"\tTest()"<key = ++num; std::stringstream ss; ss<<"copy_c_&"<str = ss.str(); std::cout<<"\tTest(const Test &ex)"<key = ++num; std::stringstream ss; ss<<"copy_&"<str = ss.str(); std::cout<<"\tTest(Test &ex)"<key = ++num; std::stringstream ss; ss<<"operator=_&_c_&"<str = ss.str(); std::cout<<"\tTest& operator = (const Test& ex)"<key = ++num; std::stringstream ss; ss<<"operator=_&_&"<str = ss.str(); std::cout<<"\tTest& operator = (Test& ex)"<key = ++num; std::stringstream ss; ss<<"operator=_c_&"<str = ss.str(); std::cout<<"\tTest operator = (const Test& ex)"<key = ++num; std::stringstream ss; ss<<"operator=_&_c"<str = ss.str(); std::cout<<"\tTest& operator = (const Test ex)"<key = ++num; std::stringstream ss; ss<<"operator=_&_c["<str = ss.str(); std::cout<<"\tTest& operator = (const int k)"<