【c++】继承机制中的构造器和析构器
2017-08-19 14:11
169 查看
出处 http://blog.csdn.net/w_linux
目录(?)[-]
一继承机制中构造与析构应用代码
效果
解析
二继承机制中构造器和析构器的调用时间
效果
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<
4000
li style="padding:0px 5px;">51
52
53
54
55
56
57
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
![](https://img-blog.csdn.net/20170320224207433?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd19saW51eA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
理解以下几步
1.pig的名字在pig的构造器中并没有初始化,为什么在主函数中给pig对象赋值了阿水的阿里,可以形成?
2.子类是否可以访问基类的私有成员?
3.pig的构造器如何定义?
理解以下图
![](https://img-blog.csdn.net/20170320224918931?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd19saW51eA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170320224947509?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd19saW51eA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170320225020000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd19saW51eA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
pig在定义构造器是,利用初始化列表将Animal的名字继承给了pig类,简单的说子类继承了基类
子类不能访问基类的私有成员变量
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
![](https://img-blog.csdn.net/20170321213302627?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd19saW51eA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
从以上结果可以看出,基类与子类中构造器和析构器的调用时间
目录(?)[-]
一继承机制中构造与析构应用代码
效果
解析
二继承机制中构造器和析构器的调用时间
效果
一、继承机制中构造与析构应用代码
#include <iostream> #include <string> using namespace std; class Animal{//这里不给name私有原因是,主函数中子类访问了name,因为子类不能访问基类的私有成员,所以这里不给name私有 // private: // string name; public: Animal(string theName);//基类构造器 void eat(); void sleep(); string name; }; class Pig:public Animal { public: void climb(); Pig(string thename);//子类构造器 }; Animal::Animal(string theName) { name=theName; } void Animal::eat() { cout<<"我正在吃\n\n"<<endl; } void Animal::sleep() { cout<<"我正在睡\n\n"<<endl; } Pig::Pig(string thename):Animal(thename)//初始化列表 { } void Pig::climb() { cout<<"我正在爬\n\n"<<endl; } int main() { Pig pig("阿水的阿里");//将字符串阿水的阿里直接给了name属性(基类,子类可共用) cout<<"这只pig的名字:"<<pig.name<<endl; pig.climb(); pig.eat(); pig.sleep(); return 0; }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<
4000
li style="padding:0px 5px;">51
52
53
54
55
56
57
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
1、效果
2、解析
理解以下几步1.pig的名字在pig的构造器中并没有初始化,为什么在主函数中给pig对象赋值了阿水的阿里,可以形成?
2.子类是否可以访问基类的私有成员?
3.pig的构造器如何定义?
理解以下图
pig在定义构造器是,利用初始化列表将Animal的名字继承给了pig类,简单的说子类继承了基类
子类不能访问基类的私有成员变量
二、继承机制中构造器和析构器的调用时间
#include <iostream> #include <string> using namespace std; class Animal{ public: Animal(); ~Animal(); void dosomething(); }; class Pig:public Animal { public: Pig(); ~Pig(); }; Animal::Animal() { cout<<"基类构造器正在被调用\n\n"<<endl; } Animal::~Animal() { cout<<"基类析构器正在被调用\n\n"<<endl; } void Animal::dosomething() { cout<<"基类的方法正在被调用\n\n"<<endl; } Pig::Pig() { cout<<"子类构造器正在被调用\n\n"<<endl; } Pig::~Pig() { cout<<"子类析构器正在被调用\n\n"<<endl; } int main() { Pig pig; pig.dosomething(); cout<<"end!\n"<<endl; return 0; }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
1.效果
从以上结果可以看出,基类与子类中构造器和析构器的调用时间
相关文章推荐
- 混迹于C++之继承机制中的构造器和析构器
- 【C++】【学习笔记】【017】继承机制中的构造器和析构器
- 继承机制中的构造器和析构器 - C++快速入门17
- 继承机制中的构造器和析构器 - C++快速入门17
- C++(笔记)解释继承机制中构造器与析构器
- 混迹于C++之继承器中的构造器与析构器
- 继承机制中的构造器与析构器
- C++中子类继承父类构造器和析构器的执行顺序
- c++三种继承机制和访问权限
- 快速入门C++ 07(构造器和析构器)
- 混迹C++ 之构造器和析构器
- c++ 继承机制易犯的错误
- 【转】C语言实现C++面向对象的封装、继承、多态机制
- C++的三种继承机制以及继承机制对三种访问权限(public, protected, private)的影响
- 【003】继承 构造器 析构器
- C++中继承机制下基类public/private/protected成员的访问方式
- C++学习之路——继承机制
- Java继承机制中,关于构造器的重写
- 构造器和析构器 - C++快速入门15
- C++之派生类的构造器与析构器