1、关于继承的小技巧
继承是c++的特性,它赋予了c++足够的灵活。而在一些特殊情况时,一定要对此进行限制。有一些关键字可以做到:
class 类名 = final ;//指定这个类无法继承
类名() = default ; //指定这个构造函数是默认构造函数
类名(类名 &a) = delete ; //指定这个拷贝构造函数无法使用,想不到delete还有这种妙用
explict 类名(标准类型 & a) //显式指定构造函数,主要是非pod类型需要显式类型转换。
2、编程时可以用typedef巧妙的给类名起别名。
3、关于auto和decltype:
关键字自动推导更像是个占位符,让编译器自动推导该变量是什么类型。这极大程度的节省了人工成本,程序员无需记住复杂的内容,只需专注于程序的逻辑即可。
以auto为例auto a = 3;但不能auto it;因为编译器无法推导出it的类型。
auto还可以用于auto &it = a;配合*、const等一起使用。
此外,还有decltype。decltype的使用方法类似于一个函数,int x = 0; decltype(x) x1; decltype(x) & x2 = x; decltype(&x) x4;这里,x4回被推导为int*
区别于auto,decltype可以放在表达式右侧,因此: using int_ptr = decltype(&x);
而且decltype还可以用于类内的定义
class demo final{
public:
using set_type = std::set<int>;
private:
set_type m_set;
using iter_type = decltype(m_set.begin());
iter_type m_pos;
};
4、const、volatile、mutable: