2017年4月面试知识点
1.类的复制构造函数和类中重载=的参数都是const 引用。
class A
{
public:
A(const A& TmpObj)//copy construct
{
m_a = TmpObj.m_a;
}
A& operator = (const A& TmpObj)//注意返回值是引用
{
m_a = TmpObj.m_a;
return *this;
}
bool oprator > (const A& TmpObj)
{
if(m_a > TmpObj.m_a)
{
return ture;
}
return false;
}
private:
int m_a;
}
2.友元:
class A
{
friend class B //将 B 申明为A 的友元类,B的所有成员函数都是 A 的友元函数,友元函数都能访问A中的所有私有成员。
friend void Func(A a_obj)
{
a_obj.m_a =xxx; //ok
}
private:
m_a;
}
class B
{
public :
void Func(A a_obj)
{
a_obj.m_a = xxx; // ok , 可以直接访问
}
}
3.拷贝构造函数的调用场景,在下列3种场景会调用拷贝构造函数:
1. 一个对象在初始化的时候,注意是初始化,即定义该对象的时候,用另一对象初始化该对象。
2.当函数参数是值传递时(非引用),函数的参数有对象,调用时,将会先产生一个临时对象,Tmpobj, 将实参复制给该临时对象,此时会调用拷贝构造函数。
3.当函数返回值是对象时,在执行return 语句时,将产生一个临时对象 Tmpobj,将返回的值复制给该对象,此时会调拷贝构造函数。