Birisi aşağıdaki kodun neden "sınıf B :: 1" olacağını açıklayabilir mi?Kod, türetilmiş sınıf yöntemini çalıştırır, ancak temel parametre yönteminden varsayılan parametre alır
Neden türetilen sınıf sanal yöntemi, temel bir sınıfın varsayılan parametresini kullanır ve kendi başına kullanır? Benim için bu oldukça garip. Şimdiden teşekkürler!
Kodu: varsayılan değer derleme sırasında ikame edilir ve gerçek işlevi (A :: fonk veya B :: fonk) çağrılacak ise zamanında tespit edilir, beyan alınır
#include <iostream>
using namespace std;
class A
{
public:
virtual void func(int a = 1)
{
cout << "class A::" << a;
}
};
class B : public A
{
public:
virtual void func(int a = 2)
{
cout << "class B::" << a;
}
};
int main()
{
A * a = new B;
a->func();
return 0;
}
Hızlı cevap için teşekkürler! – Aremyst