练习题之C++

1.inline函数

可以在同一个项目的不同源文件内定义函数名相同但实现不同的inline函数

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

2.this指针

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

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

C.this指针是一个形参,存在栈上,但是VS下存在ECX寄存器下。编译器在生成程序时加入了获取对象首地址的相关代码,并把获取的首地址存在寄存器ECX中(其它编译器可能不同),也就是说成员函数的其它参数都正常存放在栈中,而this指针存放在ECX寄存器中,类的静态成员函数因为没有this指针这个参数,所以类的静态成员函数无法调用类的非静态成员变量****

D.单纯的对this赋空是不可以的,不过可以强转直接赋空,不过一般不进行这样的操作
2.
A.全局函数不具备this指针

B.static函数不具备this指针

C.友元函数不具备this指针

D.普通成员方法具有隐藏的this指针

3.初始化顺序

  1. 常量以及引用只能通过初始化列表初始化
  2. 静态成员,只能在类外初始化
  3. 代码题
class A

{

public:

  A(int a)

    :_a1(a)

    ,_a2(_a1)

  {}

   

  void Print()

  {

    cout<<_a1<<" "<<_a2<<endl;

  }

private:

  int _a2;

  int _a1;

}



int main()

{

  A aa(1);

  aa.Print();

}

初始化顺序由定义类时的声明顺序决定,所以先初始化_a2,由于初始化_a2时_a1还未初始化,所以_a2为随机值

输出1 随机值

  1. 在一个cpp文件里定义了一个static类型的全局变量, 只能在该cpp所在的编译模块中使用该变量

static限制了变量具有文件域

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿猿收手吧!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值