一.定义一个哺乳动物Mammal类,再由此派生出狗Dog类,定义一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序。

1.我们按照题目要求写出对应代码,然后观察输出结果来确定调用顺序就好了。

2.

3.伪代码:

类 mammal{
public:
构造函数(){输出}
private:
age weight;
};
类 dog: public mammal{
public:
构造函数(){输出}
private:
name color
};
main(){
dog a;
return 0;
}

 

代码:

 

#include<iostream>
using namespace std;
class Mammal {

protected:
    int age, weight;
public:
    Mammal() :age(1), weight(5) { cout << "Mammal constructor..." << endl; }
    ~Mammal() { cout << "Mammal destructor..." << endl; }

    const int getage() {
        return age;
    }
    void setage(int a) {
        age = a;
    }
    const int getweight() {
        return weight;
    }
    void steweight(int a) {
        weight = a;
    }
};
class dog :public Mammal{

private:
    string color;
    string name;
public:
    dog():color("white"), name("xiaobai") { cout << "dog constructor..." << endl; }
    ~dog(){ cout << "dog destructor..." << endl; }
    string getcolor() {
        return color;
    }
    void setcolor(string s) {
        color = s;
    }
    string getname() {
        return name;
    }
    void setname(string s) {
        name = s;
    }
};
int main() {
    dog xiaobai;
    cout << "xiaobai is " << xiaobai.getage() << " years old" << endl;
    return 0;
}

4.总结:先调用基类的构造函数再调用派生类对象的构造函数

二.定义一个基类及其派生类,在构造函数中输出提示信息,构造派生类的对象,观察构造函数的执行情况。

1.按照题目要求写出对应代码即可。

2.

3.伪代码:

 1 基类{
 2 public 3 构造函数(){输出a;}
 4 };
 5 派生类:public:基类{
 6 public:
 7 构造函数(){输出b;}
 8 };
 9 main(){
10       派生类 a;
11       return 0;  
12 }

代码:

 1 #include<iostream>
 2 using namespace std;
 3 class base {
 4 public:
 5     base() {
 6         cout << "构造基类对象" << endl;
 7     }
 8 };
 9 class derived :public base {
10 public:
11     derived() {
12         cout << "构造派生类对象" << endl;
13     }
14 };
15 int main() {
16     derived sb;
17     return 0;
18 }

4.总结:

输出结果是

构造基类对象
构造派生类对象

三.定义一个基类base,有两个公有成员函数fn1,fn2;私有派生出derived类,如何通过derived类的对象调用基类的函数fn1;

1.如题,我们首先定义一个类base,在base类里写两个函数fn1,fn2,他们的返回值分别为1 和2 ,然后我们写一个base类的派生类derived,在derived类里写两个函数 fn1,fn2。他们的返回值分别为base::fn1()和base::fn2()。这样就可以实现在派生类里调用基类的函数。

2.

3.

 1 #include<iostream>
 2 using namespace std;
 3 class base {
 4 public:
 5     static int  fn1()  { return 1; }
 6     static int  fn2()  { return 2; }
 7 };
 8 class derived {
 9 public:
10     int fn1() {
11         return base::fn1();
12     }
13     int fn2() {
14         return base::fn2();
15     }
16 };
17 int main() {
18     derived a;
19     a.fn1();
20     return 0;
21 }

4.总结:我们在派生类里调用基类的函数时,在该函数前加上类的作用域即可。

posted on 2023-04-10 21:26  leapss  阅读(113)  评论(0)    收藏  举报