首页 > C/C++ > 侯捷-C++面向对象程序设计-学习笔记-03-内联函数与构造函数

侯捷-C++面向对象程序设计-学习笔记-03-内联函数与构造函数

2020年8月10日
分类: C/C++ 标签: ,

1,内联函数

  • inline关键字修饰的函数,或者在类头文件中定义的函数
  • 函数体要短
  • inline只是建议编译器去按内联的方式实现函数代码,是否真正内联由编译器决定
  • 内联的好处:代码易读,易维护;类型检查,易排错;代码展开,运行快
  • 内联的缺点:代码展开导致程序体积较大

2,访问控制符

  • 限定外界对类成员的访问权限
  • public成员可被外界直接访问,private成员只能被类对象自身访问,protected成员能被类和派生类的对象访问

3,构造函数

  • 构造函数用于创建对象和初始化对象,其被编译器自动调用
  • 构造函数声明方式为:
    • class Complex{
          public:
            //constructor
            Complex(double r=0, double i=0)
              :re(r), im(i)
            {}
      
          private:
            double re, im;
      };
      函数名同类名,没有返回值。
      参数列表后跟初始化列表。
  • 初始化列表
    • 如其字面意义,是用来对成员变量进行【初始化】的,而构造函数体内的代码则是对成员变量的【赋值】
    • 初始化列表中的代码先于构造函数体内的代码执行
    • 有些成员变量必须在初始化列表中初始化,比如:引用类型的成员变量、const类型的成员变量、使用非默认构造函数初始化的成员变量等
  • 构造函数可以被重载
    • 重载函数:同一作用域内,同名不同参的函数。所谓的同名只是代码中的同名,编译器具体实现时还是会将这些重载函数命名为不同名的函数
  • 构造函数可以是private
    • 这样可防止从外部创建类的实例
    • 类需要提供一个方法用来创建对象
    • 这种设计通常用于创建singleton化的类对象
    • class A{
          public:
              static A& getInstance();
      
          private:
              A();
              A(const A& rhs);
      };
      
      A& A::getInstance()
      {
          static A a;
          return a;
      }
      

 

————————-笔记分割线——————–

【侯捷老师推荐的书籍】

您可能需要这些【参考资料】:
零一积流|IT参考 原创文章,转载请注明出处: http://www.it-refer.com/2020/08/10/houjie-cplusplus-object-oriented-programming-03-inline-constructor-function


本文的评论功能被关闭了.