1. 程式人生 > >c++筆記續

c++筆記續

c++ 復制

<center>c++筆記</center>

1.c++的變量初始化只有2種

  • 直接初始化:使用括號,int a(10);
  • 復制初始化:使用=,int a=10; (對象的復制構造函數)

2.cin與getline讀字符串

  • cin讀入字符串以空格為分割
  • getline(cin,line)讀入字符串,以‘\n’為分割

3.函數指針

bool lencom(void);
typedef bool (*fun)(void);
fun pf1 = lencom;
fun pf1 = &lencom; //獨立函數直接使用函數名和在前面加&是等效的。
成員函數必須使用&

4.默認構造函數

  • 默認構造函數的調用時機:在定義一個對象時,只要沒有提供初始化式,就將調用默認構造函數。
  • 類的默認構造函數:一個類哪怕只定義了一個構造函數,編譯器將不再自動生成默認構造函數
  • 自定義默認構造函數:無參構造函數是該類的默認構造函數。
  • 使用默認構造函數:

    Sales_item myobj(); #error 申明一個函數而不是定義對象;
    Sales_item myobj;#正確,調用默認構造函數
    Sales_item myobj=Sales_item();#正確,復制賦值

5.復制構造函數

  • 使用時機:當使用一個同類型的對象對新定義的對象進行初始化時,將顯式的使用復制構造函數;當將該類型的對象傳遞給函數或從函數返回該類型的對象,將隱式使用復制構造函數;初始化順序容器中的元素;根據元素初始化式列表初始化數組元素。例如:vector<string>svec(5)的過程為編譯器首先使用string的默認構造函數創建一個臨時值來初始化svec,然後使用復制構造函數將臨時值復制到svec的每一個元素。
  • 默認復制構造函數:如果該類不存在復制構造函數,那麽編譯器總是會為該類合成一個復制構造函數。該合成的默認構造函數的行為是,執行逐個成員初始化,將新對象初始化為原對象的副本,即非static成員完全保持相同。
  • 禁止復制 使用private修飾復制構造函數可以禁止復制

c++筆記續