0
点赞
收藏
分享

微信扫一扫

Hi3516DV500 SVP_NNN添加opencv库记录

源码之路 2023-10-15 阅读 57

文章目录

1.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. 在一个cpp文件里定义了一个static类型的全局变量, 只能在该cpp所在的编译模块中使用该变量
举报

相关推荐

rv1126-rknpu-v1.7.3添加opencv库

0 条评论