L'appel de constructeur de classe de base
Dans le programme ci-dessous, la ligne
Derived(double y): Base(), y_(y)
corriger/permis? Qui est, faut-il suivre ANSI règles?
#include <iostream>
class Base
{
public:
Base(): x_(0)
{
std::cout << "Base default constructor called" << std::endl;
}
Base(int x): x_(x)
{
std::cout << "Base constructor called with x = " << x << std::endl;
}
void display() const
{
std::cout << x_ << std::endl;
}
protected:
int x_;
};
class Derived: public Base
{
public:
Derived(): Base(1), y_(1.2)
{
std::cout << "Derived default constructor called" << std::endl;
}
Derived(double y): Base(), y_(y)
{
std::cout << "Derived constructor called with y = " << y << std::endl;
}
void display() const
{
std::cout << Base::x_ << ", " << y_ << std::endl;
}
private:
double y_;
};
int main()
{
Base b1;
b1.display();
Derived d1;
d1.display();
std::cout << std::endl;
Base b2(-9);
b2.display();
Derived d2(-8.7);
d2.display();
return 0;
}
Si l'OP parle de
Le code à distance comme "pure C"? Et il y a un norme ANSI pour le C++.
Butterworth: Vous avez raison, mon contrôle.
ANSI
il utiliser pur C
probablementLe code à distance comme "pure C"? Et il y a un norme ANSI pour le C++.
Butterworth: Vous avez raison, mon contrôle.
OriginalL'auteur The Void | 2010-04-25
Vous devez vous connecter pour publier un commentaire.
Il est permis, mais c'est inutile, puisque le compilateur va faire l'appel pour vous. J'ai peur de ne pas envie de faire un Standard au chalut de ce matin, bien.
OriginalL'auteur
C'est exact, mais les appels à la classe de base par défaut les constructeurs ne sont pas nécessaires.
En supposant que vous êtes à l'aide de g++, vous pouvez utiliser l'option suivante: -ansi (<=> -std=c++98)
OriginalL'auteur log0