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>...
《Visual C++ 面向对象编程教程——王育坚》是一本专为学习MFC(Microsoft Foundation Classes)和面向对象编程技术而设计的教学资料。该教程以幻灯片的形式呈现,结合实例与详细的讲解,使得学习过程更为直观且易于...
C++第二版的课件由陈志泊教授编著,深入浅出地介绍了面向对象编程的基本概念和实践。 首先,课程内容涵盖结构化程序设计与面向对象程序设计的对比。结构化程序设计(Structured Programming - SP)采用自顶向下、...
C++是由Bjarne Stroustrup于1979年在C语言的基础上发展起来的,它引入了类、对象、继承、多态等面向对象编程的概念,同时也保留了C语言的低级特性,使得程序员可以进行高效的系统编程。C++的一个重要特点是它的模板...
面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它通过将数据和操作数据的方法封装在对象中,实现了程序设计的模块化和抽象化。本教程对比了两种广泛应用的面向对象语言——C++和Java...
首先,C++中的“类”(Class)是面向对象编程的基础,它是一种用户自定义的数据类型,用于描述一类对象的属性(成员变量)和行为(成员函数)。通过定义类,我们可以抽象出现实世界中的实体,使代码更具有结构性和...
C++的面向对象编程主要包括三个核心概念:封装、继承和多态。 1. 封装:封装是面向对象编程的基础,它允许我们将数据和操作数据的方法捆绑在一起,形成一个独立的单元——类。在C++中,通过访问控制修饰符(如...
面向对象的程序设计语言C++是一种强大的、高效的编程语言,广泛应用于系统软件、应用软件、游戏开发、设备驱动等各个领域。C++是C语言的扩展,它引入了类、对象、封装、继承、多态等核心概念,使得程序设计更加模块...
C++是一种强大的编程语言,以其面向对象特性而闻名,它结合了过程化编程和面向对象编程的优势。在“C++面向对象程序设计教程——课件PPT”中,我们可以深入学习这一主题,由陈维兴和林小茶编著,清华大学出版社出版...
这本书深入浅出地讲解了C++语言的核心概念,特别是面向对象编程(OOP)的思想和技术。第二版在第一版的基础上进行了修订和完善,更适应现代编程环境的需求,包含了更多的实践案例和编程练习。 在学习这门课程的过程...
2. **选择题**测试封装、继承、多态等面向对象特性。 3. **改错题**指出对类和对象理解的常见错误,如访问权限、构造函数的定义等。 4. **读程序写结果**涉及对象创建、成员函数调用、数据成员访问等。 以上是C++...
总之,《Visual C++实用编程技术——从C++、面向对象到窗口程序设计》这本教程将引导读者从C++语言基础出发,深入到面向对象编程,最后通过MFC和Windows API实现窗口程序的设计。通过学习,开发者不仅能够掌握C++...
在C++描述部分,作者将讲解如何使用C++的类和对象来实现这些数据结构,强调封装、继承和多态等面向对象编程的概念。同时,书中还会涵盖模板、异常处理、STL(标准模板库)等C++高级特性,使读者能够编写出更加高效...
- **C++**:基于C语言扩展而来,增加了面向对象编程特性,支持类、继承、多态等概念。 - **Visual C++**:微软提供的集成开发环境(IDE),支持C/C++编程,提供了丰富的工具和服务。 **1.6 学习程序设计的方法和必要...
此外,C++引入了面向对象编程的概念,包括类(class)、对象(object)、封装、继承和多态。类是定义对象模板,对象是类的实例。例如,一个简单的类定义: ```cpp class Student { public: std::string name; int ...
面向对象编程(Object-Oriented Programming, OOP)以其封装、继承和多态三大特性,使得代码更加模块化,易于理解和维护。 1. 封装:封装是面向对象编程的基础,它将数据和操作这些数据的方法捆绑在一起,形成一个...
本课程通过实际案例深入浅出地讲解了C++面向对象编程的核心概念——继承与多态性,并结合C语言的内存管理技术,为初学者提供了一个全面的学习框架。通过学习这些内容,开发者能够更好地理解如何设计可扩展、可维护的...