当前位置: 首页 > news >正文

const和explicit关键字

指针 - const

观察下面的参数

void exampleWithPointers() {// const在*左边 - 指向的内容是constvoid printString(const char* str) {// str[0] = 'A'; // 错误!不能修改指向的内容std::cout << str << std::endl;}// const在*右边 - 指针本身是constvoid fixedPointer(char* const str) {str[0] = 'A'; // 可以修改内容// str = nullptr; // 错误!不能修改指针本身}// 双重constvoid completelyFixed(const char* const str) {// str[0] = 'A'; // 错误!// str = nullptr; // 错误!}
}

const关键字在指针类型的左边,表示指针指向的内容不能修改

                   在指针类型的右边,表示指针本身不能被修改

类中的const

1、const修饰 类成员函数

将成员函数声明为const,表示该成员函数不会修改类的成员变量(除了被mutable修饰的成员变量)。

这样的函数可以被const对象调用。

class MyClass {
private:int data;mutable int counter; // 可以在const成员函数中修改public:// const成员函数 - 承诺不修改对象状态int getData() const {// data = 10; // 错误!不能在const成员函数中修改成员变量counter++;    // 正确!mutable成员可以修改return data;}// 非const成员函数void setData(int value) {data = value; // 可以修改成员变量}// const重载void print() const {std::cout << "Const print: " << data << std::endl;}void print() {std::cout << "Non-const print: " << data << std::endl;}
};

2、const修饰 函数返回值

当函数返回值被const修饰时,表示返回的值不能被修改。这通常用于返回指针引用,以防止返回的对象被修改

class MathUtils {
public:// 返回const值 - 防止对返回值进行修改const int getConstantValue() {return 42;}// 返回const引用 - 避免复制,同时防止修改const std::string& getName() const {static std::string name = "MathUtils";return name;}// 返回const指针const int* getDataPointer() const {static int data = 100;return &data;}
};

explicit关键字

explicit关键字在C++中用于防止隐式转换。它主要用于修饰类的构造函数,表明该构造函数只能用于显式转换,不能用于隐式转换。这样可以避免编译器在你不期望的情况下进行自动类型转换,从而增加代码的安全性和可读性。

应用场景:

1、单参数构造函数:当一个构造函数只有一个参数时(或者有多个参数,但除了第一个参数外都有默认值),它可能被用于隐式转换。如果你不希望发生这种隐式转换,应该使用explicit

2、多参数构造函数:在C++11及以后,explicit也可以用于多参数构造函数,防止隐式转换。

http://www.dtcms.com/a/525880.html

相关文章:

  • 建设植绒衣架网站wordpress discuz论坛模板
  • MapAnything: 通用前馈式度量3D重建
  • (springboot+vue前后端分离部署)阿里云windows服务器部署
  • 优质聊城做网站费用杭州 app开发公司
  • springboot——@Scheduled为什么顺序执行
  • 做一个网站需要多少人域名查询网中国万网
  • 【Java面向对象编程(OOP)的三大基本特性】
  • 潍坊网站商品网站怎么做的
  • 响应式网站页面设计福彩网站开发
  • 专做婚纱店设计网站网站设计软件开发
  • 上海网站建设口碑最好的公司低成本门户网站开发
  • Watch and Learn: Semi-Supervised Learning of Object Detectors from Videos
  • 北京网站开发报价到那个网站做翻译接单
  • 云蛇吞路懂车赛-游戏程序系统方案
  • 自己做网站不想买空间 自己电脑可以做服务器吗?yu网站建设
  • 网站建设费能入长期待摊吗网站建设及网页设计教案
  • h5网站欣赏wordpress搜索调用
  • DepthAI V3.1.0 正式版发布!
  • 网络课程网站开发过程东莞长安网站设计公司
  • UVa 11183 Teen Girl Squad
  • 医疗教育的网站建设山西公司网站建设
  • CompositionLocal 用法
  • 怎样设计一个网站平台免费seo课程
  • EFM8开发系列
  • 哈尔滨网站优化咨询wordpress哪个模版好用
  • 网站策划ppt自己申请网站空间
  • 阿里云国际站GPU:阿里云GPU怎么释放实例?
  • Linux网络UDP(10)
  • 网站培训制度wap网站开发流程
  • 稳定网站服务器租用厦门网站建设公司