d03 ex01 refonte complete ok

This commit is contained in:
Hugo LAMY
2022-02-22 18:49:15 +01:00
parent bb6c0515b1
commit 088a54d036
9 changed files with 87 additions and 125 deletions

View File

@@ -2,38 +2,38 @@
class Base {
public:
Base() {
std::cout << "base default constructor\n";}
Base(int i) {
std::cout << "base parameters constructor\n";}
Base(Base const & src) {
std::cout << "base copy constructor\n"; *this = src;}
Base () : _n(1) {}
Base & operator=(Base const & rhs) {
std::cout << "base assignation operator\n"; return *this;}
~Base() {
std::cout << "base default destructor\n";}
_n = rhs.getN();
std::cout << "base assignation operator\n";
return *this;
}
int getN() const {
return _n;
}
void putN(int i) {
_n = i;
}
protected:
int _n;
};
class Derived : public Base {
public:
Derived() {
std::cout << "derived default constructor\n";}
Derived(int i) {
std::cout << "derived parameters constructor\n";}
Derived(Derived const & src) {
std::cout << "derived copy constructor\n"; *this = src;}
Derived & operator=(Derived const & rhs) {
std::cout << "derived assignation operator\n"; return *this;}
~Derived() {
std::cout << "derived default destructor\n";}
Base::operator=(rhs);
std::cout << "derived assignation operator\n";
return *this;}
};
int main () {
Base base1(1); std::cout << "\n";
Derived derived1(1); std::cout << "\n";
Base base2(derived1); std::cout << "\n";
Derived derived2(base1);
Derived foo1;
Derived foo2;
foo2.putN(2);
std::cout << foo1.getN() << " " << foo2.getN() << "\n";
foo2 = foo1;
std::cout << foo1.getN() << " " << foo2.getN() << "\n";
return 0;
}