Dans le programme ci-dessous, est la ligneappel constructeur de la classe de base
correcte/permis? Cela signifie-t-il que les règles ANSI sont respectées?
#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 les pourparlers sur OP 'ANSI' il utilise pur' C' probablement – abatishchev
@abatishchev Est-ce que le code ressemble à un "C pur"? Et il existe aussi une norme ANSI pour C++. –
@Neil Butterworth: Vous avez raison, mon oubli. – abatishchev