首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 回顧:成員函數重載、類與結構體、this 指針

     編輯:C++ 入門

內聯成員函數

定義方式:

  1. 類體內直接定義:隱式內聯。
  2. 類體外定義:需加 inline 關鍵字。

目的:減少函數調用開銷,以空間換時間。編譯器對含循環、switch 等複雜函數可能不內聯。

成員函數重載

條件:同一作用域(同一類)、函數名相同、參數列表不同(類型、個數、順序)。返回類型不同不構成重載。

注意:帶默認參數的函數易產生二義性。如 void Init(int x=0) 與 void Init() 同時存在會報錯。

類與結構體

唯一區別:默認訪問權限。class 默認 private,struct 默認 public。C++ 中 struct 也可定義成員函數,若所有成員均為 public,則與 class 無異。

this 指針

本質:編譯器隱式傳遞的第一個參數,指向調用對象。調用 obj.func(args) 實際為 func(&obj, args)。使成員函數知道操作哪個對象的數據成員。成員函數內可省略 this-> 直接訪問成員。

代碼示例

class Test {
    int x_;
public:
    void Init(int x) { x_ = x; } // 隱式 this->x_ = x;
    void Print() const { cout << x_; }
};

struct S { int x; void Set(int v) { x = v; } }; // 默認 public

int main() {
    Test t; t.Init(10); // 編譯器轉為 Test::Init(&t, 10)
    S s; s.Set(20);
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved