zoukankan      html  css  js  c++  java
  • data structure and algorithm analysis上一点摘录

    explicit构造函数

    class IntCell

    {

       public:

          explicit IntCell(int initialValue=0):storedValue(initialValue){}

    private:

          int storeValue;

    };

    所有的单参数的构造函数都必须是explicit的,以避免后台的类型转换。否则,一些宽松的规则将允许在没有显示类型转换操作的情况下进行类型转换。通常,这种不希望发生的行为会破坏代码的可读性,并导致难以发现的错误。

    考虑以下例子:

    IntCell obj;

    obj=37;

    在C++中,单参数构造函数定义了一个隐式类型转换,改转换创建了一个临时对象,从而使赋值变成了兼容,例如:

    IntCell temporary =37;

    obj=temporary;

    注意,临时对象的构造也可以通过使用单参数构造函数来实现。使用explicit意味着单参数构造函数不能用来创建隐式临时对象。

    常量成员函数

    class IntCell

    {

       public:

          explicit IntCell(int initialValue=0):storedValue(initialValue){};

          int read() const{return storedValue};

    private:

          int storedValue;

    };

    在C++中,每个成员函数都被标识为访问函数或修改函数。在设计阶段,这是很重要的一步,不可以被简单的看成注释。例如,访问函数不能用于常量对象。默认情况下,所有成员函数都是修改函数,要使成员函数成为访问函数必须在参数类型列表结尾的圆括号后加上关键字const。

    如果成员函数标记为访问函数但在实现又去改变数据成员的值,那么就会出现编译错误。

  • 相关阅读:
    Appium+Python移动端(Android)自动化测试环境搭建
    我的python笔记06
    我的python笔记05
    Monkey如何使用
    android studio 虚拟机adb.exe已停止工作的处理
    完整的整车开发流程
    汽车行业项目管理
    分析几种常见的汽车电子技术应用与发展
    打印流
    序列化流
  • 原文地址:https://www.cnblogs.com/welkinwalker/p/2254631.html
Copyright © 2011-2022 走看看