C++与类相关的关键词和修饰符说明
2016-05-21 17:07
274 查看
在C++11中,新增了 override 和 final 说明符;编译器更是能识别出左值和右值,对于成员函数,新增 & 和 &&类型限定符。&用来说明该成员函数只能被左值对象调用,&&用来说明该成员函数只能被右值对象调用。
总结关于 this 指针类型的限定符 const, & 和 &&。这三个限定符都是说明this 指针类型的,函数的参数的类型是函数签名的一部分,所以在类外给出函数的实现时,这三个类型限定符不能少。否则会爆 原型跟定义不一致的错误。
static, friend, virtual, final, override 只是用来说明,本身跟类型信息无关。finnal 用来说明类不能被继承或者虚函数的实现必须被派生类继承;override 用来说明此虚函数只是继承了接口,在派生类中重新实现了。以前的黑科技用虚继承 + 友元来实现禁止继承。
所以在类外给出相应的static变量,友元函数,虚函数的定义时,不用再写上这些说明符:因为这些说明符本来就不是表达类型信息的。
另外,delete 用来禁止编译器合成特定的成员函数,defult 强制编译器合成;noexcept 表示函数不会抛出异常,constexpr 表示函数的结果在编译器就能得到。
总结关于 this 指针类型的限定符 const, & 和 &&。这三个限定符都是说明this 指针类型的,函数的参数的类型是函数签名的一部分,所以在类外给出函数的实现时,这三个类型限定符不能少。否则会爆 原型跟定义不一致的错误。
class Base { public: virtual Base* copy() const & = 0; }; class Derived: public Base { public: virtual Base* copy() const &; }; Base* Derived::copy() const & { return new Derived; }
static, friend, virtual, final, override 只是用来说明,本身跟类型信息无关。finnal 用来说明类不能被继承或者虚函数的实现必须被派生类继承;override 用来说明此虚函数只是继承了接口,在派生类中重新实现了。以前的黑科技用虚继承 + 友元来实现禁止继承。
所以在类外给出相应的static变量,友元函数,虚函数的定义时,不用再写上这些说明符:因为这些说明符本来就不是表达类型信息的。
另外,delete 用来禁止编译器合成特定的成员函数,defult 强制编译器合成;noexcept 表示函数不会抛出异常,constexpr 表示函数的结果在编译器就能得到。
相关文章推荐
- C语言:输入输出
- c++通过指针实现队列
- 减少C++代码编译时间的方法
- C++顺序容器笔记
- C++ opencv 读取mp4文件
- C++基类的析构函数为什么是虚函数
- C++倒计时程序,可根据需求自行修改。
- C++作业6
- C语言文件操作一
- c++ for_each
- STL Iterator 迭代器
- C++实现设计模式之--单例模式
- C++图像处理中从硬盘读入图像文件,并将相应数据赋值给图像类的char**data成员
- c++实现矩阵的余弦相似度
- opencl的c++程序
- C++ socket函数解析
- C++ 虚函数表解析
- C++迷宫问题(BFS)
- CppUnit的安装及使用指南
- 在使用cppunit,搭建测试环境时遇到的问题以及解决办法(仅供参考)