当前位置:   article > 正文

C\C++面试知识点总结(超全)_c面试知识点总结

c面试知识点总结


关键字const

主要作用:

  1. 修饰变量或对象,说明该变量或对象不能被改变
  2. 修饰指针,分为指向常量的指针(const在星号左边,不能用指针改值,属于底层const)和常指针(const在*号右边,能用指针改值,属于顶层const
  3. 修饰引用,常用于形参,既避免了拷贝,又避免了函数对值的修改
  4. 修饰成员函数,说明该成员函数内不能修改成员变量。此时可以用于区分重载(常对象调用常成员函数)
  5. 修饰成员变量,此时只能在构造函数初始化参数列表初始化

拓展:

与define的区别:

  1. const常量有数据类型,而宏常量没有
  2. 编译器可以对const进行安全检查,而只对宏常量进行字符替换
  3. 有些调试工具只可以对const进行调试

如何修改常成员函数中类的成员变量:

  • 在类的成员变量中,用mutable修饰成员变量即可

关键字static

主要作用:

  1. 修饰普通变量,使变量存储在静态区。在main函数前就分配了空间。有初始值就初始化,没有就默认初始化
  2. 修饰普通函数,防止多人开发时函数名相同
  3. 修饰成员变量,使所有该类的对象共享这一份复制,在实现文件中初始化。不需要生成对象就能访问该成员。class::m_val
  4. 修饰成员函数,此时static成员函数没有this指针,故只能访问static成员变量。不需要生成对象就能使用该函数。class::m_func
  5. 函数体内的static变量作用范围仅为该函数体,不同于auto变量,该变量的内存只被分配一次。在下一次调用该函数时依然维持上一次的值

this指针

  1. 是一个隐含于每一个非静态成员函数中的指针(全局函数和静态函数没有),指向正被该成员函数操作的那个对象
  2. 本质是成员函数的第一个参数T*const this(常指针)。常成员函数第一个参数为const T *const this。调用成员函数时,编译器将类的指针作为实参传递进去,成员函数内隐含使用this指针访问数据成员
  3. this不是一个常规变量,只是一个右值,不能取其地址&this
  4. this指针并不占用对象的空间,跟对象之间没有包含关系,只是当前调用的对象被它指向而已
  5. 避免自赋值if (this == &rhs) return *this;

inline内联函数

inline必须与函数定义放在一起才能使函数成为内联,仅放在函数声明前不起作用

例:
普通函数:声明定义都以inline修饰
成员函数:类内定义则隐式当成内联函数;类外定义则类外定义处使用inline修饰

优点:

  1. 内联函数同宏函数一样在被调用处进行代码展开省去了函数调用的开销(参数压栈、栈帧开辟和回收、结果返回等),从而提高程序的运行速度
  2. 内联函数相较于宏,在代码展开时会做安全检查或自动类型转换,且可以在运行时调试,真正具有函数特性
  3. 类的声明中定义的函数除了虚函数的其他函数都隐式地当成内联函数

缺点:

  1. 代码膨胀(复制):内联是通过代码复制来消除函数调用的开
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号