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

C++ 函數重載詳解:普通函數、成員函數與構造函數

     編輯:關於C++

重載規則

同一作用域內,函數名相同但參數列表不同(類型、個數、順序),即構成重載。返回類型不參與重載區分。

三種常見重載形式

1. 普通函數重載

void func(int a) { cout << "int: " << a << endl; }
void func(float a) { cout << "float: " << a << endl; }
void func(double a) { cout << "double: " << a << endl; }

int main() {
    func(4);       // 調用 int 版本
    func(3.1f);    // 調用 float 版本
    func(3.14);    // 調用 double 版本
}

2. 成員函數重載

class Cube {
    int x, y;
public:
    void sum() { cout << x^3 << ' ' << y^3; }
    void sum(int a, int b) { x=a; y=b; cout << x << ' ' << y; }
};

int main() {
    Cube c;
    c.sum(2,3); // 設置並輸出 2 3
    c.sum();    // 輸出立方 8 27
}

3. 構造函數重載

class Rectangle {
    int len, wid, hgt;
public:
    Rectangle() { cout << "構造矩形\n"; }
    Rectangle(int l, int w) : len(l), wid(w) { cout << "面積: " << l*w; }
    Rectangle(int l, int w, int h) : len(l), wid(w), hgt(h) { cout << "體積: " << l*w*h; }
};

int main() {
    Rectangle a;      // 默認
    Rectangle b(3,4); // 面積 12
    Rectangle c(3,4,5); // 體積 60
}

重點總結

  • 編譯器根據實參類型自動匹配最佳候選函數
  • 構造函數重載是創建對象不同初始化方式的基礎
  • 成員函數重載包含 this 指針隱式參數,但重載規則同普通函數
  • 避免歧義:如 func(int) 和 func(float) 調用 func(3.14) 會報錯(double 無精確匹配)

函數重載提高代碼可讀性,減少命名負擔,是 C++ 多態性的靜態體現(編譯時綁定)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved