1、多态中为什么要把父类的析构函数写成虚函数?
虚析构函数,当父类指针或者引用指向子类对象的时候,通常会直接析构父类对象,
而不会析构子类的对象,只有在析构函数前面加上virtual时,就会先析构子类对象,然后再析构父类对象。
虚析构函数是为了避免使用父类指针释放子类对象时造成内存泄露。
2、如果用virtual修饰构造函数会如何?
virtual不能修饰:普通函数、构造函数、 static静态成员函数、inline内联函数
3、explict关键字的用法?什么情况下会使用这个关键字?
什么情况下会使用这个关键字?(在嵌入式当中,如果要读取一些寄存器的值,就要加这个关键字,防止编译器进行优化)
关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。
声明为explicit的构造函数不能在隐式转换中使用。
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。
所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一