如果不显式的声明构造函数和析构函数,系统会默认生成
系统生成的构造函数是无参构造函数和拷贝构造函数。
如果手动定义了一个有参的构造函数,则系统不会生成默认的无参构造。这时,需要手动定义无参构造函数。
构造函数与析构函数一定是public的,不能是私有的。
class B
{
public:
int m;
B()
{
}
B(int n):m(n)
{
}
};//如果手动加有参构造,一定也要手动加无参构造。不然就不能:B b
//不过这时候,拷贝构造函数还是会默认生成
class B
{
public:
int m;
};//不加构造函数的话,系统会默认构造函数。这时候 B b是可行的
int main()
{
B b;
system("pause");
return 0;
}
类内对象的初始化(赋参数初始化):
必须在类的构造函数初始化列表中给类内对象初始化或在类内对象声明时用=进行初始化( 不能用() )
class B
{
public:
int m;
//A a; 如果无值初始化,就无所谓了
A a=10; //可行的
//A a(10); 不可行的
B(int n):m(n),a(10) //可行的
{
}
};
构造与析构
最新推荐文章于 2023-04-27 17:10:36 发布