深入解析C++构造函数与析构函数

来源:互联网 发布:nba2k18库里捏脸数据 编辑:程序博客网 时间:2024/05/16 07:07

class String
{
public:
     String()//默认构造函数
     {
        cout << "String()" << endl;
     }
     String( const char* p)//带参的构造函数
     {
        cout << "String( const char* p)" <<endl;
     }
     ~String()//析构函数
     {
        cout << "~String()" << endl;
     }
     String( const String &right)//复制构造函数
     {
        cout << "String( const String &right)" << endl;
     }
     String& operator=( const String &right)//赋值构造函数
     {
        cout << "String& operator=( const String &right)" << endl;
     }
};

String get_string(void)
{
#define CHOSE 3
#if CHOSE == 1
     String str = "abde"; //调用带参的构造函数,构造对象
     //调用拷贝构造函数,将局部对象的值拷贝给返回值,并析构局部对象
     return str;
#elif CHOSE == 2
     //此直接调用带参的构造函数,构造返回值
     return "abd";
#elif CHOSE == 3
     //此与2的情况相同,调用带参的构造函数构造返回值
     return String("abde");
#endif
}
int _tmain(int argc, _TCHAR* argv[])
{

#if 0
     //对于返回的String对象,马上会调用它的析构函数,析构对象
     get_string();
#elif
     //此处申明的局部对象就是函数返回时的对象,此对象的析构将在main函数退出时进行
     String str = get_string();
#endif

    cout << " main function will quit./n";
 return 0;
}