#include<iostream>
using namespace std;
class Test
{
public:
//默认的无参构造函数
#if 0
Test()
{
}
#endif
//显式无参构造,会覆盖默认的
Test()
{
m_x = 0;
m_y = 0;
}
//显式提供一个有参数的构造函数,默认的构造函数就不复存在
Test(int x,int y)
{
m_x = x;
m_y = y;
}
void printT()
{
cout << "x = " << m_x << " y = " << m_y << endl;
}
//显式析构函数,默认的就被覆盖了
~Test()
{
cout << "~Test()..." <<endl;
}
private:
int m_x;
int m_y;
};
int main()
{
//调用Test无参构造,出错。因为类中已经提供了有参数的构造函数
//默认的构造函数就不复存在,从而无法调用,若还想调用,则类中提供显示无参构造
Test t1;
t1.printT();
return 0;
}
总结:
显式无参构造,会覆盖默认的,显式提供一个有参数的构造函数,默认的构造函数就不复存在,显式析构函数,默认的就被覆盖了。
调用Test无参构造,若出错,因为类中已经提供了有参数的构造函数
默认的构造函数就不复存在,从而无法调用,若还想调用,则类中提供显示无参构造