c++面向对象的编程

一、概述:

  面向对象编程基于三个基本概念:数据抽象、继承和 动态绑定

  在c++中,用类进行数据抽象; 用类派生从一个类继承另一个类:派生类继承基类的成员;

  多态:动态绑定使编译器能够在 运行时  决定是使用基类中定义的函数还是派生类中定义的函数;

  面向对象编程的关键思想是多态性(polymorphism);实现多态必须通过:1、继承  2、动态绑定

    通过动态绑定(dynamic binding)能够编写程序使用继承层次中任意类型的对象,无须关心对象的具体类型。使用这些类的程序

  无须区分函数是在基类还是在派生类中定义的;

  在c++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这一事实是动态绑定的关键。用引用(或指针)调用的虚函数在运行是确定,被调用的函数是引用(或指针)所指对象的实际类型所定义的;

 1 void print(const base &item, size_t n)
 2 {
 3         os << item.net_price(n) <<endl;
 4 }
 5 /*
 6  *base base1;
 7  *diver diver1;      //diver继承base;
 8  *
 9  * net_price(size_t t)在base为virtual函数,并有实现(非纯虚函数)
10  * net_price(size_t t)在diver内也进行了函数实现
11  *
12  *在print中调用基类中net_price()还是派生类中的net_price()呢?
13  *      这个是由程序在运行时决定的,关键在于看参数base&的引用
14  *   是指向基类对象呢,还是指向派生类对象呢,来直接确定的;
15  *(实现的基础是:基类的引用即可以指向基类对象也可以指向派生类对象)
16  */
 1 class Item_base{
 2 public:
 3         Item_base(const std::string &book="",
 4                   double sales_price=0.0):
 5         isbn(book), price(sales_price)
 6         {
 7         }
 8
 9         std::string book() const
10         {
11                 return isbn;
12         }
13         virtual double net_price(std::size_t n) const
14         {
15                 return n*price;
16         }
17         virtual ~Item_base()
18         {
19         }
20 private:
21 private:
22         std::string isbn;
23 protected:
24         std::string isbn;
25 protected:
26         }
27 private:
28         std::string isbn;
29 protected:
30         double price;
31 }
32 /*除了构造函数之外,(析构函数最好加virtual)任意非static成员函数都可以是虚函数。
33  *保留字只能在类内部的成员函数声明中出现,不能用在类定义体外部出现的函数定义上;
34  */
时间: 2024-10-25 20:53:46

c++面向对象的编程的相关文章

如何培养面向对象的编程思想(转)

1.什么是面向对象? 面向对象是专指在程序设计中采用封装,继承,多态和抽象的设计方法.面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分.这些程序设计语言可分为以下几类:系统中一切事物皆为对象:对象是属性及其操作的封装体:对象可按其性质分类,对象成为类的实例:实例关系和继承关系是对象之间的静态关系:消息传递是对象之间动态联系的唯一方式,也是计算的唯一形式:方法是消息的序列. 2.如何理解面向对象? 从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内

Python3 面向对象 高级编程

正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.  class Student(object): pass 然后,尝试给实例绑定一个属性: >>> s = Student() >>> s.name = 'Michael' # 动态给实例绑定一个属性 还可以尝试给实例绑定一个方法: >>> def set_age(self, age): # 定义一个函数作为实例方法 ...

Python 2.7 学习笔记 面向对象的编程

python是一种面向对象的语言.本文介绍如何用python进行面向对象的编程. 首先我们说下对象和类,类是一种类型的定义,对象是类的实例. 一.内置对象类型(内置类) 其实我们前面已经大量用到了对象,如字符串.列表.字典等,这些对象的类型是python的内建对象类型. 比如: a=[] 这其实就是创建了一个空的列表对象,并将它赋值给变量a,变量a就指向了一个列表对象. 那列表对象对应的类是什么呢?其实列表对象对应的类名是list. 我们还可以通过类来创建对象,看下例子: >>> pri

C++面向对象的编程思想机器人

C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> class Robot { public: Robot() :Battery(100){}//构造一个机器人的时候让机器人的电量值为满格 void speak();//发言函数 void charge();//充电函数 void function(int i);//选择功能函数 private: unsigned

【PHP面向对象(OOP)编程入门教程】2.什么是类,什么是对象,类和对象之间的关系

类的概念:类是具有相同属性和服务的一组对象的集合.它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分. 对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位.一个对象由一组属性和对这组属性进行操作的一组服务组成.从更抽象 的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用:它是一组属性和有权对这

&#8203;Python中面向对象的编程

Python面向对象的编程 1概述 (1)面向对象编程 面向对象的编程是利用"类"和"对象"来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容. (2)面向对象的特征 1)类(Class):一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.在类中定义了这些对象的都具备的属性(variables

PHP面向对象(OOP)编程完全教程

转自:http://blog.snsgou.com/post-41.html 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就通过实例来说明使用PHP的OOP进行编程的实际意义和应用方法. 我们通常在做一个有数据库后台的网站的时候,都会考虑到程序需要适用于不同的应用环境.和其他编程语言有所不同的是,在PHP中,操作数据库的是一系列的具体功能函数(如

Java面向对象的编程

类的多态性: Java语言中含有方法重载与成员覆盖两种形式的多态:(区别于c++) 方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同. 成员覆盖:子类与父类允许具有相同的变量名称,但数据类型不同,允许具有相同的方法名称,但完成的功能不同. 类:class 对象:object   实例:Instance 创建属于某类的对象,需要通过下面两个步骤来实现: 1.  声明指向"由类所创建的对象"的变量 2.  利用new创建新的对象,并指派给先前所创建的变量

C++面向对象高级编程(九)Reference与重载operator new和operator delete

摘要: 技术在于交流.沟通,转载请注明出处并保持作品的完整性. 一 Reference 引用:之前提及过,他的主要作用就是取别名,与指针很相似,实现也是基于指针. 1.引用必须有初值,且不能引用nullptr 2.引用之后不能再引用别人 3.引用通常不用于声明变量,多用于参数类型,和返回值类型 见下面代码 int main(int argc, const char * argv[]) { int x=0; //p is a pointer to x int* p = &x; // r is a

Matlab 为什么要使用面向对象的编程——开篇

基本上,Matlab的入门资料都会涉及到Matlab编程,但一般的书只涉及到面向过程的编程,忽视了面向对象的编程.实际上,Matlab很早就支持面向对象的编程,我们平时在利用图像对象.坐标系对象.图像对象都或多或少的使用了一些面向对象的性质. 本系列博文是本人在学习利用Matlab进行面向对象编程时自己的理解,主要的资料就是Matlab的帮助文档.因为本人对面向对象的编程只知皮毛,一些理解上的错误在所难免,欢迎指正,互相学习. 类是面向对象的编程中重要的一个概念,类就是描述具有共同特征对象的抽象