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,将返回的值复制给该对象,此时会调拷贝构造函数。

posted @ 2017-04-26 21:18  紫气东来老子西行  阅读(87)  评论(0)    收藏  举报