博客
关于我
c++中explicit和mutable关键字探究
阅读量:366 次
发布时间:2019-03-05

本文共 626 字,大约阅读时间需要 2 分钟。

explicit 和 mutable 关键字在 C++ 中的作用

1. explicit 关键字

在 C++ 中,explicit 关键字用于防止隐式转换,确保用户明确地指定了构造函数的参数类型。以下是详细说明:

  • 隐式转换的危险性:如果不使用 explicit,编译器会尝试进行隐式转换,可能导致意外的赋值和修改。例如,一个私有成员变量如果被隐式地赋值或修改,可能会导致安全问题。

  • 构造函数中的使用:在构造函数前使用 explicit,确保只能通过明确的构造方式创建对象,防止错误的赋值。

  • 示例:在 Base 类的构造函数前使用 explicit 后,Base base = 5; 将无法直接赋值,编译器会报错,防止隐式转换。

2. mutable 关键字

mutable 关键字用于允许在常函数中修改非静态和非常量数据成员。以下是详细说明:

  • 常函数的灵活性:虽然常函数通常不能修改数据成员,但使用 mutable 关键字可以让常函数修改特定的数据成员。

  • 示例:在 demo 类中,m_nCount 前使用 mutable,使得 getCnt() 函数可以在不修改其他数据成员的情况下修改 m_nCount。

总结

  • explicit:防止隐式转换,确保构造函数参数的明确性,防止意外赋值和修改。
  • mutable:允许在常函数中修改特定数据成员,保持函数的灵活性,同时保持其他数据成员的不变性。

通过合理使用这些关键字,可以更好地控制类的行为和数据安全。

转载地址:http://sccwz.baihongyu.com/

你可能感兴趣的文章
OpenAI Gym简介及初级实例
查看>>
int 转 CString
查看>>
Edit编辑框自动换行与长度
查看>>
Java面向对象
查看>>
JAVA带标签的break和continue
查看>>
Java获取线程基本信息的方法
查看>>
vue源码分析(MVVM篇)
查看>>
设计模式之组合模式
查看>>
(Python学习笔记):字典
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>
leetcode 14 最长公共前缀
查看>>
做做Java
查看>>
C++并发与多线程(一)
查看>>
计算机网络子网划分错题集
查看>>
java一些基本程序
查看>>
vue-依赖-点击复制
查看>>
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
紫书——蛇形填数
查看>>