Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Funktionsüberladung und virtuelle Funktionsfunktionen

C++-Funktionsüberladung und virtuelle Funktionsfunktionen

WBOY
WBOYOriginal
2024-04-15 22:36:02349Durchsuche

Antwort: Durch Funktionsüberladung und virtuelle Funktionsfunktionen in C++ können Entwickler Funktionen mit demselben Namen, aber unterschiedlichen Parameterlisten oder Verhaltensweisen erstellen. Detaillierte Beschreibung: Funktionsüberladung: Erstellen Sie Funktionen mit demselben Namen, aber unterschiedlichen Parameterlisten, um Funktionen mit ähnlicher Funktionalität in verschiedenen Situationen zu verwenden. Virtuelle Funktion: Eine Funktion, die die Basisklasse in einer abgeleiteten Klasse überschreibt und für Polymorphismus verwendet wird, sodass die abgeleitete Klasse eine andere Implementierung als die Basisklasse bereitstellen kann.

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

Funktionsüberladung und virtuelle Funktionsfunktionen in C++

Funktionsüberladung

Funktionsüberladung ermöglicht es Ihnen, mehrere Funktionen mit demselben Namen, aber mit unterschiedlichen Parameterlisten zu erstellen. Dies ist nützlich, wenn Sie Funktionen mit ähnlicher Funktionalität in verschiedenen Situationen verwenden müssen.

Syntax:

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

Beispiel:

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;
}

Funktion virtuelle Funktion

Funktion virtuelle Funktion ermöglicht es Ihnen, die Funktionen der Basisklasse in der abgeleiteten Klasse zu überschreiben. Dies ist nützlich für Polymorphismus und objektorientierte Programmierung, da Sie so eine abgeleitete Klasse mit einer anderen Implementierung als der Basisklasse bereitstellen können.

Syntax:

Verwenden Sie das Schlüsselwort virtual, wenn Sie eine Funktion in einer Basisklasse deklarieren. 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
  • virtual ret_type function_name(parameter_list) const = 0;
🎜Verwenden Sie das Schlüsselwort override, wenn Sie eine Funktion in einer abgeleiteten Klasse überschreiben. ?? Listen. Sie können nicht einfach den Rückgabetyp ändern. 🎜
  • Virtuelle Funktionsfunktionen gelten nur für virtuelle Funktionen, d. h. Funktionen, die in der Basisklasse als virtuell deklariert sind. 🎜
  • Reine virtuelle Funktionen (in der Basisklasse als virtuell und = 0 deklariert) müssen in der abgeleiteten Klasse überschrieben werden, andernfalls wird die abgeleitete Klasse zu einer abstrakten Klasse . 🎜🎜
  • Das obige ist der detaillierte Inhalt vonC++-Funktionsüberladung und virtuelle Funktionsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn