C++11和 C++14的推出,新的技术,新的代码方式不断出现,码农需努力啊!
关键词 default
在 C++中,有4种特殊函数
构造函数,拷贝构造函数,析构函数,拷贝赋值函数
一个类即使不声明上述4个函数,当代码被编译并且需要时,编译器会自动生成.
构造函数一旦声明带参数的,需手动写一个空的函数体.
虚析构函数,在旧式0x 中通常都是为空函数.
....
这些函数都在源代码中存在!可能某些编译器会优化掉代码,但不确保所有编译器都会优化.
而 default 就是了为了解决这问题的.
例如:
class A{
public: A() =default;
A(const A&) = default;
virtual ~A()=default;
A& operator=(const A&) = default;
};
常用的是 A() = default; 和 virtual ~A()=default;
这样写比写一个空白函数更加优化;
关键词 delete
不允许访问某个函数,达到类似被删除的效果.其实针对的是拷贝构造函数,带参数的构造函数等.
例如
class A{
public:
A() = delete;
A(int i){}
};
实际代码:
A a;//error
A b(2);//ok