来总结一下C++中的构造函数 析构函数,强化一下记忆:
构造函数:
构造函数一种特殊的成员函数,名字与类名相同,没有返回值,可以有参数。
构造函数的作用是在创在对象时,对对象内的成员进行赋初值操作。
构造函数必须是 public 属性的,否则创建对象时无法调用。当然,设置为 private、protected 属性也不会报错,但是没有意义。
构造函数没有返回值,因为没有变量来接收返回值,即使有也毫无用处,这意味着:
- 不管是声明还是定义,函数名前面都不能出现返回值类型,即使是 void 也不允许;
- 函数体中不能有 return 语句。
如果定义类的时候,没有定义构造函数,系统会自动生成一个默认的无参构造函数。
//假如A是一个类
A(){ } //这是系统生成的默认无参构造函数 可以认为其不做任何事
调用没有参数的构造函数可以省略括号。比如,在栈上创建对象可以写作A a1()
或A a
,在堆上创建对象可以写作A *pa = new A()
或A *pa = new A
,它们都会调用构造函数 A()。
一个类必须有构造函数,要么用户自己定义,要么编译器自动生成。一旦用户自己定义了构造函数,不管有几个,也不管形参如何,编译器都不再自动生成。
对象生成时,自动调用构造函数,一旦对象生成完毕,则无法在其上执行构造函数。
一个类可以有多种构造函数:构造函数的重载。
和普通成员函数一样,构造函数是允许重载的。一个类可以有多个重载的构造函数,创建对象时根据传递的实参来判断调用哪一个构造函数。
构造函数