面试题|c++面试题总结

内联函数与宏定义的区别?

  • 内联函数在执行是可调试,而宏定义不可以
  • 编译器会对内联函数做类型检查 宏不可以
  • 内联函数可以访问类的成员变量
  • 在类中声明同时定义成员函数自动转换成内联函数
c++中一个空类会默认产生那些类成员函数?
#include using namespace std; class Empty{ public: Empty(); //默认构造函数 Empty(const Empty&); //默认拷贝构造函数 ~Empty(); //默认析构函数 Empty&operator=(const Empty&); //默认赋值运算符 Empty*operator&(); //默认取址运算符 const Empty*operator&()const; //默认const取址运算 }; int main() {return 0; }

下列代码中的输出语句输出0吗?为什么?
#include using namespace std; struct CLS{ int m_i; CLS(int i):m_i(i){} CLS(){CLS(0); } //不会 //在默认构造函数内部调用带参数的构造函数是递归行为, // 程序仅执行函数调用,而不执行其后的初期化, // 只有生成对象时,初始化表达式才会随相应的构造函数一起调用 }; int main() { CLS obj; cout<

一个类A没有任何数据成员和成员函数时,sizeof(A)的值是什么?如果不是0,编译器为什莫没有让它为0. sizeof(A)大小为1,因为类是是用来定义对像的,每个对象的存储空间中存储相应的数据成员值,通常第一个数据成员的地址为对象地址.如果长度为0,无法实例化空类的对象,为此编译器添加一个字节的数据成员.
为什么static数据成员一定要在类外初始化? 【面试题|c++面试题总结】静态成员属于整个类,不属于某个对象,如果在类的内部定义,在建立多个对象时会导致多次定义,
静态数据成员的特点 静态数据成员属于类不属于对象,无论定义多少个对象,静态数据成员只存在一份
静态数据成员必须在类外进行初始化
静态数据成员存储在全局数据区,为本类的所有对象共享,不属于特定的类对象。

    推荐阅读