您的位置:首页 > 编程语言 > C语言/C++

C++与类相关的关键词和修饰符说明

2016-05-21 17:07 274 查看
在C++11中,新增了 override 和 final 说明符;编译器更是能识别出左值和右值,对于成员函数,新增 & 和 &&类型限定符。&用来说明该成员函数只能被左值对象调用,&&用来说明该成员函数只能被右值对象调用。

总结关于 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 表示函数的结果在编译器就能得到。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: