2021-3-19 第七天
C++内容学习
Github->CplusPlus->一、基础进阶
网址: github.com/Light-City/CPlusPlusThings/blob/master/README.md
代码环境:Ubuntu 18.04
编译器:gcc/g++
一、基础进阶
三)this
this作用域在类内部
当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。
对各成员的访问均通过this进行
this指针的使用:
在类的非静态成员函数中返回类对象本身时,使用return *this
当参数与成员变量名相同时,写作:this->n=n
this是一个const指针(指针常量),只能指向一个地址(类本身)
如果成员函数声明为const,则this本身与它指向的成员值都不能改变
这时this会被解析为:const A * const this
#这也是在类中使用const成员函数的原因:不改变成员值。
四)inline
1、类中内联
类中的函数是隐式内联函数
想成为内联函数,必须在实现处(定义处)加inline
编译器对inline函数的处理步骤:
- 将inline函数体复制到inline函数调用点处
- 为所用inline函数中的局部变量分配内存空间
- 将inline函数的输入参数和返回值映射到调用方法的局部变量空间中
- 如果inline函数有多个返回点,将其转变为inline函数代码库末尾的分支
内联能提供函数效率,但并不是所有函数都定义成内联函数
内联函数以空间换时间,省去函数调用的开销,从而提高函数的执行效率
以下函数不适合用内联:
如果函数体内代码较长,内联将导致内存消耗代价比很高
如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用开销大。