实例1:构造器及其参数的继承应用
1 #include <iostream>
2 #include <string>
3
4 class Animal//定义Animal类
5 {
6 public:
7 std::string mouth;
8 std::string name;
9
10 Animal(std::string theName);//类Animal的构造器
11 void eat();
12 void sleep();
13 void drool();//流鼻涕
14 };
15 Animal::Animal(std::string theName)//类Animal构造器函数
16 {
17 name = theName;
18 }
19
20 class Pig:public Animal//类Pig继承于类Animal
21 {
22 public:
23 Pig(std::string theName);//类Pig的构造器
24 void climb();
25 };
26 Pig::Pig(std::string theName):Animal(theName)//类Pig的构造函数继承于类Animal的构造函数
27 {
28
29 }
30
31 class Turtle:public Animal//类Turtle继承于类Animal
32 {
33 public:
34 Turtle(std::string theName);//类Pig的构造器
35 void swim();
36 };
37 Turtle::Turtle(std::string theName):Animal(theName)//类Turtle的构造函数继承于类Animal的构造函数参数
38 {
39
40 }
41
42 void Animal::eat()//Animal类中的方法函数
43 {
44 std::cout << "I'm eatting!" << std::endl;
45 }
46 void Animal::sleep()
47 {
48 std::cout << "I'm sleeping!Don't disturb me!" << std::endl;
49 }
50 void Animal::drool()
51 {
52 std::cout << "我是公的,看到母的会流口水 流口水。。。" << std::endl;
53 }
54
55 void Pig::climb()//类Pig中的climb方法函数
56 {
57 std::cout << "我是一只漂亮的小母猪猪,我会上树,邱。。。" << std::endl;
58 }
59 void Turtle::swim()//类Turtle中的swim方法函数
60 {
61 std::cout << "我是一只小甲鱼,当母猪抓我,我就游到海里,哈。。。" << std::endl;
62 }
63 int main()
64 {
65 Pig pig("小猪猪");//定义一个对象pig,由于其继承于类Animal,
66 //且构造函数也继承于类Animal的构造函数,所以参数"小猪猪"将赋值给类pig中的名字属性name
67 Turtle turtle("小甲鱼");//定义一个对象turtle
68
69 std::cout << "这只猪的名字是:" << pig.name << std::endl;
70 std::cout << "每只乌龟都有个伟大的名字:" << turtle.name << std::endl;
71
72 pig.eat();
73 turtle.eat();
74 pig.climb();
75 turtle.swim();
76
77 return 0;
78 }
实例2:构造器与析构器的综合运用
1 #include <iostream>
2 #include <string>
3 //由于继承,编译后将首先调用基类构造器,然后调用子类构造器,然后运行其它程序;
4 //运行到程序末尾时,先调用子类析构器,让后调用基类析构器。
5 class BaseClass//定义基类BaseClass
6 {
7 public:
8 BaseClass();//构造器
9 ~BaseClass();//析构器
10
11 void doSomething();
12 };
13
14 class SubClass : public BaseClass定义子类SubClass,类SubClass继承于类BaseClass
15 {
16 public:
17 SubClass();
18 ~SubClass();
19 };
20
21 BaseClass::BaseClass()//类BaseClass构造器函数
22 {
23 std::cout << "进入基类构造器。。。\n";
24 std::cout << "我在基类构造器里边干了某些事。。。\n\n";
25 }
26
27 BaseClass::~BaseClass()//类BaseClass析构器函数
28 {
29 std::cout << "进入基类析构器。。。\n";
30 std::cout << "我在基类析构器里边干了某些事。。。\n\n";
31 }
32 void BaseClass::doSomething()//基类的doSomething函数
33 {
34 std::cout << "我干了某些事。。。\n\n";
35 }
36 SubClass::SubClass()//子类SubClass的构造函数
37 {
38 std::cout << "进入子类构造器。。。\n";
39 std::cout << "我在子类构造器里面还干了某些事。。。\n\n";
40 }
41 SubClass::~SubClass()//子类SubClass的析构函数
42 {
43 std::cout << "进入子类析构器。。。\n";
44 std::cout << "我在子类析构器里面还干了某些事。。。\n\n";
45 }
46 int main()
47 {
48 SubClass subclass;
49 subclass.doSomething();
50
51 std::cout << "完事,收工!\n";
52 return 0;
53 }