天天看點

構造函數調用C++ 類和動态記憶體配置設定

本文純屬個人見解,是對前面學習的總結,如有描述不正确的地方還請高手指正~

    載重特别的一個:

    void  name() const;  // 隻能被const類型的對象調用

    void  name();  // 被一般的對象調用

    是個載重的函數,載重可以以函數類型和個數,以及函數限制符(const)來别區載重的函數

    C++主動供提了上面這些成員函數:

    認默構造函數,如果沒有義定構造函數

    複制構造函數,如果沒有義定

    指派操作符,如果沒有義定

    認默析構函數,如果沒有義定

    位址操作符,如果沒有義定。

    載重 << 操作符

    義定上面元友

ostream &  opeartor << (ostream & os, const c_name  & obj)
{
       os << ...;
       return os;
}      

    複制構造函數的一般情勢

    每日一道理

我把卷子攤在課桌上,恨不得敲一陣鑼,叫大家都來看看我這光彩的分數。

    class name(const classname &);

    複制構造函數被調用的情勢:

    假設 A 是一個string對象

    string  B(A)

    string  C  =  A

    string  D  =  string(A)

    string  *E  = new  string(A);

    還有每當編譯器成生副本都調用複制構造函數。具體來說,當函數安值傳遞對象或函數傳回對象時,調用複制構造函數。

c_name  &  c_name::operator = (const c_name & cn)
{
      if(this == &cn)
          return *this;
      delete[]   c_pointer; //放釋原類中的指針指向的容内
      c_pointer = new type_name[size];
      ......
      return *this;
}      

繼續閱讀