如果我们没有定义构造函数,系统会为我们自动定义一个无参的默认构造函数的,它不对成员属性做任何操作,如果我们自己定义了构造函数,系统就不会为我们创建默认构造函数了。析构函数也是如此,只不过析构函数无参数,无函数重载。
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Test { public: #if 0 //默认的无参构造函数 Test() { } #endif //显式提供一个有参数的构造函数,默认的构造函数就不复存在 //只要显式地提供了一个构造函数,无论是有残的还是无参的,默认的构造函数都会消失 Test() { m_x = 0; m_y = 1; } Test(int x,int y) { m_x = x; m_y = y; } void printT() { cout << "x=" << m_x << ",y=" << m_y << endl; } #if 0 //默认的析构函数 ~Test() { } #endif //要显式地提供了一个析构函数,默认的析构函数会消失 ~Test() { cout << " ~Test()..." << endl; } private: int m_x; int m_y; }; int main(void) { //#if 0 Test t1; t1.printT(); return 0; }