首頁  >  文章  >  後端開發  >  C++ 函式重載與函式虛函式

C++ 函式重載與函式虛函式

WBOY
WBOY原創
2024-04-15 22:36:02348瀏覽

答案: C 中的函數重載和函數虛擬函數允許開發者建立具有相同名稱但不同參數列表或行為的函數。詳細描述:函數重載: 建立具有相同名稱但不同參數清單的函數,用於在不同情況下使用具有相似功能的函數。函數虛擬函數: 在衍生類別中覆寫基底類別的函數,用於多態性,允許衍生類別提供與基底類別不同的實作。

C++ 函数重载和函数虚函数

C 中的函數重載與函數虛擬函數

函數重載

函數重載可讓您建立具有相同名稱但具有不同參數清單的多個函數。這對於需要在不同的情況下使用具有相似功能的函數非常有用。

語法:

ret_type function_name(parameter_list_1);
ret_type function_name(parameter_list_2);
...

範例:

void printInfo(int x) {
  cout << "int: " << x << endl;
}

void printInfo(double x) {
  cout << "double: " << x << endl;
}

int main() {
  int a = 10;
  double b = 3.14;
  printInfo(a);  // calls printInfo(int)
  printInfo(b);  // calls printInfo(double)
  return 0;
}

函數虛函數

函數虛函數可讓您在衍生類別中覆寫基底類別的函數。這對於多態性和物件導向程式設計非常有用,因為它允許您為衍生類別提供與基底類別不同的實作。

語法:

在基底類別中宣告函數時使用關鍵字 virtual

virtual ret_type function_name(parameter_list) const = 0;

在衍生類別中重寫函數時使用關鍵字 override

override ret_type function_name(parameter_list) const { /* implementation */ }

範例:

class Shape {
public:
  virtual double area() const = 0;  // pure virtual function
};

class Circle : public Shape {
public:
  double radius;
  Circle(double radius) : radius(radius) {}
  override double area() const { return 3.14 * radius * radius; }
};

class Square : public Shape {
public:
  double side;
  Square(double side) : side(side) {}
  override double area() const { return side * side; }
};

int main() {
  Shape* s1 = new Circle(5);
  Shape* s2 = new Square(10);
  cout << "Area of circle: " << s1->area() << endl;
  cout << "Area of square: " << s2->area() << endl;
  return 0;
}

#注意事項:

  • 函數重載只適用於不同的參數清單。不能只改變回傳類型。
  • 函數虛函數只適用於虛擬函數,也就是在基底類別中宣告為 virtual 的函數。
  • 純虛函數(在基底類別中宣告為 virtual= 0)必須在衍生類別中重寫,否則衍生類別將成為抽象類別。

以上是C++ 函式重載與函式虛函式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn