博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++特性之一-----继承
阅读量:5891 次
发布时间:2019-06-19

本文共 2299 字,大约阅读时间需要 7 分钟。

  1. 子类继承父类,父类里的成员可以被子类调用
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
#include <iostream.h>
class 
Animal
{
public
:
    
void 
eat()
    
{
        
cout<<
"animal eat"
<<endl;
    
}
 
    
void 
sleep()
    
{
        
cout<<
"animal sleep"
<<endl;
    
}
};
 
class 
Fish:
public 
Animal
{
   
};
 
void 
main()
{
    
Animal an;
    
Fish fh;
    
fh.sleep();
}

2.protected 成员被毕继承只能对在子类内部访问,不能直接访问,父类本身也不能访问。

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
#include <iostream.h>
class 
Animal
{
public
:
    
void 
eat()
    
{
        
cout<<
"animal eat"
<<endl;
    
}
protected
:
    
void 
sleep()
    
{
        
cout<<
"animal sleep"
<<endl;
    
}
public
:
    
void 
breathe()
    
{
        
cout<<
"animal breathe"
<<endl;
    
}
};
 
class 
Fish:
public 
Animal
{
public
:
 
    
void 
test()
    
{
        
sleep();
    
}
   
};
 
void 
main()
{
    
Animal an;
    
Fish fh;
    
fh.test();
//子类可以通过内部成员函数来访问父类的保护成员
    
fh.sleep();
//子类不能直接访问父类的保护成员。
}
3. 继承中私有成员无论怎样都不能被子类访问!
4.构造函数。构造子类对象时,先执行父类的构造函数,再执行子类的构造函数。析构的顺序正好与其相反 。
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
#include <iostream.h>
class 
Animal
{
public
:
    
Animal(){cout<<
"Animal construction!"
<<endl;}
    
void 
eat()
    
{
        
cout<<
"animal eat"
<<endl;
    
}
protected
:
    
void 
sleep()
    
{
        
cout<<
"animal sleep"
<<endl;
    
}
public
:
    
void 
breathe()
    
{
        
cout<<
"animal breathe"
<<endl;
    
}
};
 
class 
Fish:
public 
Animal
{
public
:
    
Fish(){cout<<
"Fish construction!"
<<endl;}
 
    
void 
test()
    
{
        
sleep();
    
}
   
};
 
void 
main()
{
//  Animal an;
    
Fish fh;
    
fh.test();
//子类可以通过内部成员函数来访问父类的保护成员
//  fh.sleep();//子类不能直接访问父类的保护成员。
}
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
5.子类构造要先构造父类。当父类是有参构造函数,子类构造函数无参时,需要在后面加上 :父类的构造函数
<
div 
class
=
"cnblogs_Highlighter"
><pre
class
=
"brush:cpp"
>#include <iostream.h>
class 
Animal
{
public
:
    
Animal(
int 
height,
int 
weigtht)
//带参数的构造函数
    
{cout<<
"Animal construction!"
<<endl;}
    
void 
eat()
    
{
        
cout<<
"animal eat"
<<endl;
    
}
protected
:
    
void 
sleep()
    
{
        
cout<<
"animal sleep"
<<endl;
    
}
public
:
    
void 
breathe()
    
{
        
cout<<
"animal breathe"
<<endl;
    
}
};
 
class 
Fish:
public 
Animal
{
public
:
    
Fish():Animal(300,400)
    
{cout<<
"Fish construction!"
<<endl;}
 
    
void 
test()
    
{
        
sleep();
    
}
   
};
 
void 
main()
{
//  Animal an;
    
Fish fh;
    
fh.test();
//子类可以通过内部成员函数来访问父类的保护成员
//  fh.sleep();//子类不能直接访问父类的保护成员。
}
 
 
</pre>
</
div
>
 
出处:
作者:

转载地址:http://tkbsx.baihongyu.com/

你可能感兴趣的文章
C++中的堆,栈,静态内存区,常量区
查看>>
动态SQL实现与注意事项(有返回值与无返回值动态SQL 实现)
查看>>
java struts2 debug
查看>>
Android图片圆角效果
查看>>
WeChat Official Account Admin Platform API Introduction
查看>>
C语言写单链表的创建、释放、追加(即总是在最后的位置增加节点)
查看>>
C# LINQ详解(一)
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>
ruby学习总结04
查看>>
Binary Tree Paths
查看>>
Ueditor自定义ftp上传
查看>>
线程以及多线程
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>
occActiveX - ActiveX with OpenCASCADE
查看>>
iOS8中定位服务的变化(CLLocationManager协议方法不响应,无法回掉GPS方法,不出现获取权限提示)...
查看>>
BeanUtils\DBUtils
查看>>
VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。
查看>>
第一天,新的定义
查看>>