一.定义一个哺乳动物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.总结:我们在派生类里调用基类的函数时,在该函数前加上类的作用域即可。
浙公网安备 33010602011771号