2017-5-27 C++primer笔记

第七章 类

回家第一晚


  • 定义在类内部的函数是默认内联的。

  • 定义在类内部的构造函数(用冒号形式写的) 最后要加一个空的大括号~

  • 含有指针数据成员的类一般不宜使用默认的拷贝和复制操作。 如果类的数据成员都是内置类型的(意思是定义在类的内部?),则不受干扰。

  • 要把类的成员函数定义成内联函数 有二种途径

    • 把函数定义放在类的内部(默认内联)
    • 把函数定义放在类的外部,并在定义之前显示的指定inline

内联函数

  • 当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。

    • 省去了调用过程,加快程序运行速度。
      • 函数在调用时,有参数入栈保护现场等操作,占用很多时间。
  • 内联函数的局限性和使用时要注意的点

    • 当函数存在递归调用时,无法设置为内联
    • 当该函数中使用循环语句和switch语句时(其实也是多次调用),无法内联
    • inline函数内代码应当很短小,否则会增加体积。
    • inline是一种“请求”, 有时编译器不会理会这个请求,会给出warning。
    • 内联函数在声明时一定要写上inline。
    • 内联函数在调试时不会生效。!

    - 在一个文件定义的inline函数在另一个文件中不能使用。 所以inline 一般声明在头文件中共享

—————-

别名

    using pos = std::string::size_type;
  • pos就是后面那一串的别名。
  • 也可以用typedef来代替using
typedef std::string::size_type pos;

  • 在类外定义构造函数
    • 构造函数没有返回类型
    • 必须指明是哪个类的成员
      cpp
      Sales_data::Sales_data

      • 含义是定义Sales_data类的成员。名字是Sales _data
        • 因为它的名字和类的名字相同,所以它是一个构造函数。
    • 对比: 在类外定义类内函数和构造函数
    Screen::Screen (unsigned a){
        num = a;
    } 定义构造函数(没有返回类型)

    inline Screen &Screen::set(int a){
        num = a;
    } 定义类内的函数 有返回类型,而且是内联的

return this 和 return *this

  • return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&【引用】, 则是本身 )
  • return this返回当前对象的地址(指向当前对象的指针)

函数返回值时会产生一个临时变量作为函数返回值的副本,而返回引用时不会产生值的副本


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值