在定义类的构造函数重载时,可以在一个构造函数中调用另一个构造函数:也可以直接继承构造函数
#include <iostream>
class Base
{
public:
int value1;
int value2;
Base() { value1 = 1; }
Base(int value) : Base()
{ // delegate Base() constructor
value2 = value;
}
};
class Subclass : public Base
{
public:
using Base::Base; // inheritance constructor
};
int main()
{
Base b(2);
std::cout << b.value1 << std::endl;
std::cout << b.value2 << std::endl;
}
-
显式虚函数重写可以在函数后面添加
override
关键字。如果继承是最后一个,后面不会再存在进一步的继承时,可以使用final
关键字。 -
如果用户没有定义构造函数,则编译器会自动生成一个默认构造函数。当希望某个类不能被拷贝时,应该将其拷贝构造函数和赋值操作符重载设置为
private
class Magic
{
public:
Magic() = default; // explicit let compiler use default constructor
Magic& operator=(const Magic&) = delete; // explicit declare refuse constructor
Magic(int magic_number);
}
以前的枚举类型都是整型的,因此可以在不同的枚举类型之间进行比较,这是类型不安全的。c++ 11 中引入了 enum class,使得类型安全。
enum class new_enum : unsigned int
{
value1,
value2,
value3 = 100,
value4 = 100
};