C++面向对象继承,虚方法,类似于指针.....
//Father.h class Father { public: Father(); virtual ~Father(); int getInt(); int setInt(); virtual int vsetInt(); }; //Son.h class Son : public Father { public: Son(); virtual ~Son(); int getInt(); int setInt(); virtual int vsetInt(); };
//Father.cpp Father::Father() { } Father::~Father() { } int Father::getInt() { printf("Father: getInt()\n"); return 1; } int Father::setInt() { printf("Father: setInt()\n"); return 2; } int Father::vsetInt() { printf("Father: vsetInt()\n"); return 11; } //Son.cpp Son::Son() { } Son::~Son() { } int Son::getInt() { printf("Son: getInt()\n"); return 3; } int Son::setInt() { printf("Son: setInt()\n"); return 4; } int Son::vsetInt() { printf("Son: vsetInt()\n"); return 5; }
测试程序:
int main(int argc, char* argv[]) { printf("Derived: Father* fa=new Son();-----------------------------------\n"); Father* fa=new Son(); printf("%d\n",fa->getInt()); printf("%d\n",fa->setInt()); printf("--------Virtual Method---------------------------\n"); printf("%d\n",fa->vsetInt()); //printf("%d\n",fa->Son::vsetInt()); //Son' : is not a member of 'Father' printf("\n\n"); printf("Derived: Son* fa2=new Son();-----------------------------------\n"); Son* fa2=new Son(); printf("%d\n",fa2->getInt()); printf("%d\n",fa2->setInt()); printf("---------Virtual Method--------------------------\n"); printf("%d\n",fa2->vsetInt()); printf("%d\n",fa2->Father::vsetInt()); printf("\n\n"); printf("Derived: Son* fa3=new Father();-----------------------------------\n"); Son* fa3=(Son*)new Father(); printf("%d\n",fa3->getInt()); printf("%d\n",fa3->setInt()); printf("---------Virtual Method--------------------------\n"); printf("%d\n",fa3->vsetInt()); printf("%d\n",fa3->Father::vsetInt()); return 0; }
输出结果: Derived: Father* fa=new Son();----------------------------------- Father: getInt() 1 Father: setInt() 2 --------Virtual Method--------------------------- Son: vsetInt() 5 Derived: Son* fa2=new Son();----------------------------------- Son: getInt() 3 Son: setInt() 4 ---------Virtual Method-------------------------- Son: vsetInt() 5 Father: vsetInt() 11 Derived: Son* fa3=new Father();----------------------------------- Son: getInt() 3 Son: setInt() 4 ---------Virtual Method-------------------------- Father: vsetInt() 11 Father: vsetInt() 11
相关推荐
<br><br>第六章 C++ 面向对象程序设计<br><br>6.1 C++面向对象程序设计的重要概念<br><br>6.1.1 类与对象<br><br>6.1.2 继承与组合<br><br>6.1.3 虚函数与多态<br><br>6.2 良好的编程风格<br><br>6.2.1 命名约定<br>...
正确理解掌握C++面向对象程序设计的基本特性:类、对象、继承与派生、多态、虚函数、模板、流类库等。遵循软件过程的各个环节进行系统分析、设计、实现、集成、测试,并相应给出软件规格说明书等制品。了解当前常用...
基于C++的学生管理系统,采用了面向对象的编程思想,加入STL 容器。 实现学生信息管理系统 信息存储:存储在当前目录下的StuData目录下,如果该目录不存在则创建。 学生类 —— 名字、学号、职务(后续增加联系方式...
Visual C++是一个强大的编程工具,它以C++为语言基础。...<br> 本教程没有对C++语言做全面的介绍,而是针对有一定C语言基础的读者,着重讲解C++面向对象的三大特性——数据封装、继承性、多态性。<br>
【Python入门自学笔记专辑】——面向对象编程 前言 面相对象是Python的重要特性,继承了C++的类风格,在Python中的一切数据类型都是面向对象的。本章主要介绍Python的面向对象编程。 面向对象: 什么是OOP...
2) 面向对象编程的四个基本机制是什么? 3) 你知道 java 语言在面向对象编程方面有何独特的特点吗? 1.1.1 面向对象技术基础 1、面向对象(OO)的基本概念 (1)面向对象的基本思想 面向对象是一种新兴的程序设计...
条款25:面向对象程序设计 121 4 编译器防火墙和pimpl惯用法 123 条款26:将编译期依赖性降到最低——之一 123 条款27:将编译期依赖性降到最低——之二 127 条款28:将编译期依赖性降到最低——之三 132 条款...
C++从零开始(十三)——C++样例二(说明如何设计基于面向对象编程思想的C+ +程序) C++从零开始(十四)——何谓模板(说明模板技术及其存在的理由) C++从零开始(十五)——何谓异常(说明异常技术及其存在的理由...
C++课程大作业-采用面向对象的编程思想+STL 容器实现学生管理系统C++源码(含详细注释+项目说明).zip 基于C++的学生管理系统,采用了面向对象的编程思想,加入STL 容器。 实现学生信息管理系统 信息存储:存储在...
基于C++的学生管理系统,采用了面向对象的编程思想,加入STL 容器。 实现学生信息管理系统 信息存储:存储在当前目录下的StuData目录下,如果该目录不存在则创建。 学生类 —— 名字、学号、职务(后续增加联系...
本教程没有对C++语言做全面的介绍,而是针对有一定C语言基础的读者,着重讲解C++面向对象的三大特性——数据封装、继承性、多态性。对于C++语言的基本概念、基本语法和编程方法
1) 第1章:对象入门<br>这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。...
4.3.2 永久对象编程——例程PersistText 4.3.3 永久对象客户编程——例程PersistClient 4.4 命名与绑定技术 4.4.1 COM名字对象与IMoniker 4.4.2 COM系统名字对象 4.4.2.1 文件名字对象(file moniker) 4.4.2.2 复合...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
第三篇介绍了面向对象的程序设计,主要有类和对 象,对象生灭,友元,继承等内容.书中常以形象的比喻来解释程序设计中的概念,通俗易懂,令 读者印象深刻,更快地进入C++程序设计的大门.本书的内容涵盖了绝大部分常用的C++...
《现代C++程序设计(原书第2版)》图文并茂,通俗易懂,真正做到寓教于乐,是一本难得的C++面向对象设计入门教材。 出版者的话 译者序 前言 第1章 C++概述与软件开发 1.1 什么是C语言和C++ 1.1.1 C和C++历史回顾 1.1.2...
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论允许程序员以优雅的思维方式(思想很重要)进行复杂的编程。 4.Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、动态性...
本书循序渐进地讲述了C++的基础知识、C++程序的组成及其开发过程、C++程序中的数据、表达式和语句、控制程序流程、数组与字符串、指针与引用、使用函数、函数模板、错误和异常处理、宏和预编译、面向对象的开发、...
本书采用生动轻松的语言,深入阐述了C++语言和面向对象程序设计技术。书中设计了超过115个完整的经过教学测试的代码示例,不仅分析了这些示例的代码片段,而且还解释了如何把它们组成一个完整的程序。此外,各章后面...