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++,开发语言)