博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象切片与虚函数机制
阅读量:4882 次
发布时间:2019-06-11

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

C++语言:
01
/*
02
   对象切片
03
   此处为传值 注意与传地址相比较
04
   */
05
#include <iostream>
06
#include <string>
07
using
namespace
std;
08
09
class
Pet
10
{
11    
string
pname;
12
public
:
13    
Pet(
const
string
&
name)
14        
:
pname(
name)
15    
{}
16    
virtual
string
name()
const
17    
{
18        
return
pname;
19    
}
20    
virtual
string
description()
const
21    
{
22        
return
"This is "
+
pname;
23    
}
24
};
25
26
class
Dog
:
public
Pet
27
{
28    
string
favoriteActivity;
29
public
:
30    
Dog(
const
string
&
name
,
const
string
&
activity)
31        
:
Pet(
name
),
favoriteActivity(
activity)
32    
{}
33    
string
description()
const
34    
{
35        
return
Pet
::
name()
+
" likes to "
+
36               
favoriteActivity;
37    
}
38
};
39
40
void
describe(
Pet p)
41
{
42    
cout
<< p
.
description()
<<
endl;
43
}
44
45
int
main()
46
{
47    
Pet p(
"Alfred");
48    
Dog
d(
"Fluffy"
,
"sleep");
49    
describe(p);
50    
describe(
d);
51
52    
return
0;
53
}
54
/*
55
This is Alfred
56
This is Fluffy
57
58
Process returned 0 (0x0)   execution time : 0.070 s
59
Press any key to continue.
60
61
*/

 

C++语言:
01
/*
02
   地址传递
03
   启用虚函数机制
04
   */
05
#include <iostream>
06
#include <string>
07
using
namespace
std;
08
09
class
Pet
10
{
11    
string
pname;
12
public
:
13    
Pet(
const
string
&
name)
14        
:
pname(
name)
15    
{}
16    
virtual
string
name()
const
17    
{
18        
return
pname;
19    
}
20    
virtual
string
description()
const
21    
{
22        
return
"This is "
+
pname;
23    
}
24
};
25
26
class
Dog
:
public
Pet
27
{
28    
string
favoriteActivity;
29
public
:
30    
Dog(
const
string
&
name
,
const
string
&
activity)
31        
:
Pet(
name
),
favoriteActivity(
activity)
32    
{}
33    
string
description()
const
34    
{
35        
return
Pet
::
name()
+
" likes to "
+
36               
favoriteActivity;
37    
}
38
};
39
40
void
describe(
Pet
* p)
41
{
42    
cout
<< p
->
description()
<<
endl;
43
}
44
45
int
main()
46
{
47    
Pet
* p
=
new
Pet(
"Alfred");
48    
Dog
*
d
=
new
Dog(
"Fluffy"
,
"sleep");
49    
describe(p);
50    
describe(
d);
51
52    
return
0;
53
}
54
/*
55
This is Alfred
56
Fluffy likes to sleep
57
58
Process returned 0 (0x0)   execution time : 0.059 s
59
Press any key to continue.
60
61
62
63
*/

转载于:https://www.cnblogs.com/invisible/archive/2012/03/08/2384841.html

你可能感兴趣的文章
一个tga工具
查看>>
64bit CPU 知识 (IA32,IA64,EM64T,AMD64)
查看>>
结构体 枚举
查看>>
srtlen实现以及与sizeof的比较
查看>>
linux+win7双系统重装win7修复grub的办法
查看>>
让应用在横屏模式下启动
查看>>
Intent传递list集合时异常解决
查看>>
登录验证码demo-java
查看>>
日常练习 1.0
查看>>
php集成环境
查看>>
Ubuntu下的负载均衡Web集群配置
查看>>
Create a site by Google Site - All Free
查看>>
Fragment 的基本使用
查看>>
mvc的个别对输入数据的验证
查看>>
autoit学习安装说明及例子
查看>>
jQuery控制form表单元素聚焦
查看>>
wpf+.net 4.5 surface2.0 = 异步多点触控 时间轴 part1
查看>>
[android]不解锁刷机
查看>>
Ural1519 Formula 1
查看>>
SQL Server 收缩日志
查看>>