热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

对象切片与虚函数机制

C语言:Codee#2574401*02对象切片03此处为传值注意与传地址相比较04*05#include06#include07usingna
C++语言: Codee#25744
01 /*
02    对象切片
03    此处为传值 注意与传地址相比较
04    */
05 #include
06 #include
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&#43;&#43;语言: Codee#25745
01 /*
02    地址传递
03    启用虚函数机制
04    */
05 #include
06 #include
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 " &#43; 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() &#43; " likes to " &#43;
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 &#61; new Pet("Alfred");
48     Dog* d &#61; 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



推荐阅读
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 题目概述:Sereja 拥有一个由 n 个整数组成的数组 a1, a2, ..., an。他计划执行 m 项操作,这些操作包括更新数组中的特定元素、增加数组中所有元素的值,以及查询数组中的特定元素。 ... [详细]
  • 题目描述:Balala Power! 时间限制:4000/2000 MS (Java/Other) 内存限制:131072/131072 K (Java/Other)。题目背景及问题描述详见正文。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 探讨了一个包含纯虚函数的C++代码片段,分析了其中的语法错误及逻辑问题,并提出了修正方案。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
author-avatar
see海是海天是天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有