一些碎碎念

关于c++的inline关键字,以下说法正确的是( )

A.使用inline关键字的函数会被编译器在调用处展开
B.头文件中可以包含inline函数的声明
C.可以在同一个项目的不同源文件内定义函数名相同但实现不同的inline函数
D.递归函数也都可以成为inline函数

A.inline只是一种建议,需要看此函数是否能够成为内联函数,具体看编译器。

B. inline函数不支持声明和定义分离,编译器一旦将一个函数作为内联函数处理,就会在调用位置展开,即该函数是没有地址的,也不能在其他源文件中调用,故一般都是直接在源文件中定义内联函数的。

C.inline函数会在调用的地方展开,所以符号表中不会有inline函数的符号名,不存在链接冲突。

D.比较长的函数,递归函数就算定义为inline,也会被编译器忽略。

故选C。

下面描述错误的是( )

A.this指针是非静态成员函数的隐含形参.
B.每个非静态的成员函数都有一个this指针.
C.this指针是存在对象里面的.
D.this指针可以为空

A.静态成员函数没有this指针,只有非静态成员函数才有,且为隐藏指针。

B.非静态成员函数的第一个参数就是隐藏的this指针。

C.this指针在非静态的成员函数里面,对象的内存布局中并没有一个专门的字段用来存储this指针。this指针在成员函数被调用时,指向调用该成员函数的对象。

D.单纯的对this赋空是不可以的,但可以强转直接赋空(不建议)。

故选C。