ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实验4 继承

2021-12-01 15:01:47  阅读:99  来源: 互联网

标签:const string 继承 int 实验 MachinePets include public


  • 实验任务二

source code :

 1 #include <iostream>
 2 #include <typeinfo>
 3 
 4 // definitation of Graph
 5 class Graph
 6 {
 7 public:
 8     void draw() { std::cout << "Graph::draw() : just as an interface\n"; }
 9 };
10 
11 
12 // definition of Rectangle, derived from Graph
13 class Rectangle : public Graph
14 {
15 public:
16     void draw() { std::cout << "Rectangle::draw(): programs of draw a rectangle\n"; }
17 };
18 
19 
20 // definition of Circle, derived from Graph
21 class Circle : public Graph
22 {
23 public:
24     void draw() { std::cout << "Circle::draw(): programs of draw a circle\n"; }
25 };
26 
27 
28 // definitaion of fun(): as a call interface
29 void fun(Graph *ptr)
30 {
31     std::cout << "pointer type: " << typeid(ptr).name() << "\n";
32     std::cout << "RTTI type: " << typeid(*ptr).name() << "\n";
33     ptr -> draw();
34 }
35 
36 // test 
37 int main()
38 {
39     Graph g1;
40     Rectangle r1;
41     Circle c1;
42 
43     // call by object name
44     g1.draw();
45     r1.draw();
46     c1.draw();
47 
48     std::cout << "\n";
49 
50     // call by object name, and using the scope resolution operator::
51     r1.Graph::draw();
52     c1.Graph::draw();
53 
54     std::cout << "\n";
55 
56     // call by pointer to Base class
57     fun(&g1);
58     fun(&r1);
59     fun(&c1);
60 }

 

The Running results :

 

 

 对代码稍作改动,在基类Graph的成员函数draw()前面加一个关键字virtual,重新编译运行程序,再次观察结果,对比一下

 

如果派生类中声明了与基类成员函数同名的新函数,即使函数的参数表不同,从基类继承的同名函数的所有重载形式也都会被隐藏。

  • 实验任务三

source code :

 1 #include"battery.hpp"
 2 #include"car.hpp"
 3 #include<iomanip>
 4 
 5 class ElectricCar:public Car{
 6     public:
 7         ElectricCar(string s1,string s2,int a,int b=0,int ca=70):Car(s1,s2,a,b),battery(ca){};
 8         void info() const {
 9             Car::info();
10             cout<<left<<setw(20)<<"capacity: "<<battery.get_capacity()<<"-kWh"<<endl;
11         }
12     private:
13             Battery battery;    
14 };
 1 #include<iostream>
 2 #include<string>
 3 
 4 using namespace std;
 5 
 6 class Battery{
 7     public:
 8         Battery(int b=70):capacity(b){}; //Battery
 9         int get_capacity() const{return capacity;}
10     private:
11         int capacity;
12 };
 1 #include<iostream>
 2 #include<string>
 3 
 4 #include<iomanip>
 5 
 6 using namespace std;
 7 
 8 class Car{
 9     
10     public:
11         Car(string s1,string s2,int a,int b=0):maker(s1),model(s2),year(a),odometers(b){};
12         void info() const {
13             cout<<left<<setw(20)<<"maker: "<<maker<<endl;
14             cout<<left<<setw(20)<<"model: "<<model<<endl;
15             cout<<left<<setw(20)<<"year: "<<year<<endl;
16             cout<<left<<setw(20)<<"odometers: "<<odometers<<endl;
17         }
18         void update_odometers(int meters){
19             if(meters<odometers){
20                 cout<<"incorrect number! "<<endl;
21             }
22                 
23             else{
24                 odometers=meters;
25             }
26                 
27         }
28     private:
29             string maker;
30             string model;
31             int year, odometers;
32 };

 

The Running results :

 

 

  • 实验任务4

source code :

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class MachinePets{
 5     public:
 6         MachinePets(const string s):nickname(s){
 7         };
 8         string get_nickname() const{return nickname;};
 9         virtual string talk(){
10         };
11         ~MachinePets(){
12         };
13     
14     private:
15         string nickname;
16 };
17 class PetCats:public MachinePets{
18     public:
19         PetCats(const string s):MachinePets(s){
20             
21         };
22         
23         string talk(){
24             return "miao wu~";
25         }
26 };
27 class PetDogs:public MachinePets{
28     public:
29         
30         PetDogs(const string s):MachinePets(s){
31             
32         };
33         string talk(){
34             return "wang wang~";
35         }
36 };

 

The Running results :

 

标签:const,string,继承,int,实验,MachinePets,include,public
来源: https://www.cnblogs.com/zmqh/p/15628972.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有