为了账号安全,请及时绑定邮箱和手机立即绑定

c++的一些不常见关键字

标签:
C++

1. explicit关键字

explicit用来防止由构造函数定义的隐式转换,比如:
class Base base=10;
即Base类只有一个int类型的变量,explicit使用了以后,就不允许这样写。
被声明为explicit的构造函数通常比非explicit的构造函数更受欢迎,因为它们禁止编译器执行非预期的类型转换。

2. volatile关键字

volatile变量是随时可能发生变化的,它告诉编译器,与volatile变量有关的运算,不要进行任何优化,每次读取volatile变量时都重新从内存读取,不会有临时寄存器来存放变量的值。
volatile可以适用于基础类型,例如:
int,char,long......
也适用于C的结构和C++的类。当对结构或者类对象使用volatile修饰的时候,结构或者类的所有成员都会被视为volatile.

一般的在多线程环境中,涉及到某些变量同步的操作时,使用volatile会更好;

3. mutable关键字

mutable用于类的非静态和非常量数据成员,一般类的成员函数被声明为const,就表示不会修改类的数据成员,但如果要在常成员函数中修改类的非静态和非常量数据成员,则可以使用mutable修饰该数据成员,如下:

class demo{public:    int getCnt() const
    {
        m_nCount++;        return m_nCount;
    }private:    int m_nCount;
};

编译会报错:test.cpp:13: 错误:increment of data-member ‘demo::m_nCount’ in read-only structure,但如果改为如下代码:

class demo{public:    int getCnt() const
    {
        m_nCount++;        return m_nCount;
    }private:    mutable int m_nCount;
};

则编译通过。



作者:晟夏的叶
链接:https://www.jianshu.com/p/7d449826a456

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消