C++面向对象的编程

目录

  • 对C++面向对象编程的理解
  • 声明和定义类

声明和定义

构造函数

析构函数

静态成员和静态变量

  • 类实例化对象
  • 对象的浅复制和深复制
  • 继承

单继承

多继承

  • 虚函数
  • 类模板
  • 其他
  • C++的优势和不足
  • C++的运用

对C++面向对象编程的理解

C++程序语言是一种面向对象的编程语言,与其他常见的面向对象语言,如:Java、Objective C不同,C++支持多重继承,因此如果在编写大型的PC端应用程序或者游戏时是非常合适的,因为其可以在声明类时可以从很多的父类中继承出来,分门别类,减少了重新写一些冗余的属性和功能从而提高程序开发的效率,因此其也要求程序员要非常熟悉应用产品的前提下,才能开发出高效率(开发效率)的应用程序

类的声明和定义

声明和定义

类声明的关键字:class

class 类名{

访问权限说明符

构造函数;

析构函数;

成员变量;

成员函数; 

};

访问权限说明符:public、protected、private(默认)

声明和定义成员变量、成员函数,特点:实例化对象才能使用

声明和定义静态变量、静态函数,关键字:static,特点:在类状态下就能进行使用

构造函数:与类同名的函数,没有返回类型,常常用于对象的初始化赋值;构造函数可以由函数参数个数的不同,参数类型的不同而形成不同的构造函数;

析构函数:在释放对象时进行调用,可用于在释放对象时进行一些有价值的数据保存;书写格式:“~与类同名的函数”;对象的释放时间:在对象的作用范围之后;

类实例化对象

类名 对象名(构造函数函数参数列表);

访问类对象的属性和方法:使用点语法“ . ”,对象名.属性/方法;

类指针对象的声明和定义:类名 *对象指针名 = &对象名/new 构造函数   属性和方法的访问符:“->”,例如:this->xxx;

对象的浅复制和深复制

浅复制

忽略了对类对象中指针这种数据类型成员的处理,指针对象直接复制,最后复制出来的指针对象所指向的数据跟原来的指针对象指向的数据是一样的

深复制

给复制出来的指针对象所指向的数据赋予新的存储空间,把新存储空间的首地址赋值给拷贝出来的对象,这就不会出现当一个对象被delete时会出现另一个对象在访问指针对象指向的数据时的运行时错误,可以使用new、malloc()等等重新分配内存的函数进行深复制

拷贝构造函数

与类同名,没有返回值,函数参数为一个类对象的常引用

书写格式:类名(const 类名 &引用名){  }

调用时期

一个对象以值传递的方式传入函数体

一个对象以值传递的方式从函数返回

一个对象需要通过另外一个对象进行初始化

重写拷贝构造函数

继承

继承关键字:“ : ”冒号

继承:public(公有)、protected(保护)、private(私有)

public:公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问

protected:私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问

private:保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的

单继承

派生类只有一个父类,格式:class 派生类类名:public\protected\private 父类名{  };

多继承

派生类有多个父类,格式:class 派生类类名 : 访问权限说明符 父类名,访问权限说明符 父类名{  };

多继承注意问题

基类的构造函数与按照派生类列表中出现的次序调用,析构函数的调用次序总是和构造函数的调用次序相反

多重继承的情况下,遇到二义性的可能将会更大,编译器不会试图根据派生类转换区别基类间的转换,转换成每个基类都一样好,避免二义性的最好方法就是指定函数的作用域

虚函数

类模板

C++面向对象的编程的更多相关文章

  1. PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...

  2. python03 面向对象的编程01

    话不多说,直接进入正文: 编程思想: 我个人所了解的有2种,还有个函数式编程的概念模模糊糊(大概是把常用的代码封装成一个函数,重复调用即可,先认为就是这样吧) 1 面向对象:面向对象是把所有的事务物当 ...

  3. 【PHP面向对象(OOP)编程入门教程】1.什么是面向对象?

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...

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

    类的概念:类是具有相同属性和服务的一组对象的集合.它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属 ...

  5. php面向对象(OOP)编程完全教程

    摘自:http://www.php-note.com/article/detail/41 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行P ...

  6. C语言面向对象风格编程

    前言 本文略谈C面向对象风格编程,如何使用过程式语言去模拟面向对象的特性?C面向对象的方式和形式很多,不一而足,本文的代码形式是模拟部分C++面向对象关键词并赋予其特性,这种方式对于初级程序员比较好理 ...

  7. Objective-C面向对象的编程

    Objective-C面向对象的编程 目录 对面向对象编程思想的理解 类的声明和定义 类的声明和定义 对关键字super和self的理解 初始化函数 @property声明类成员 类的实例化 继承 组 ...

  8. IT第十九天 - 继承、接口、多态、面向对象的编程思想

    IT第十九天 上午 继承 1.一般情况下,子类在继承父类时,会调用父类中的无参构造方法,即默认的构造方法:如果在父类中只写了有参的构造方法,这时如果在子类中继承时,就会出现报错,原因是子类继承父类时无 ...

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

    python是一种面向对象的语言.本文介绍如何用python进行面向对象的编程. 首先我们说下对象和类,类是一种类型的定义,对象是类的实例. 一.内置对象类型(内置类) 其实我们前面已经大量用到了对象 ...

随机推荐

  1. Guidelines for clock

    用两个256x16的基本存储器构成512x16的数据存储器,因为256x16的基本存储器读写时序不太符合MCU的要求,于是改写之.利用下降沿控制输入,作为基本存储器控制时钟,而上升沿控制数据输出寄存器 ...

  2. 怎样下载完整的Spring包

    自从3.2版本以后,Spring不再提供包含所有库的文件下载了只有Sping自身的最基本库,所依赖的东西需要自己搞定首先, 这个链接 包含了Spring自身和所用到的所有东西   这个 是上述链接的说 ...

  3. gVIM 简洁配置 in Windows

    原文链接:http://www.errdev.com/post/2/ 捣鼓了一段时间的VIM,神器终归是神器,果然编码效率提升了许多,当然还需要很多插件来配合.自己装插件很麻烦,还要有Vundle这个 ...

  4. C#反射实例化类并调用类的方法

    反射提高了程序的灵活性和扩展性,降低耦合性,提高自适应能力. 它允许程序创建和控制任何类的对象,无需提前硬编码目标类: SalBLL a = (SalBLL)Assembly.Load("B ...

  5. [置顶] 两台一级域名相同二级域名不同的服务器,怎么共享session

    比如www.hongchangfirst.com和video.hongchangfirst.com两个域名,一级域名相同,二级域名不同.每个服务器运行着不同的功能模块或者不同的子系统,他们使用不同的二 ...

  6. hdoj 5335 Walk Out

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5335 #include<stdio.h> #include<cstring> ...

  7. C#中的Collection 2

    Core Generic interface IEnumerable<T>:you can interate my elemnts, no need to know the count, ...

  8. 解决WebService 中泛型接口不能序列化问题

    本来要定义WebServices 方法返回一泛型接口集合IList,系统提示不能序列化泛型接口集合  1   [WebMethod]  2         public IList<Employ ...

  9. 用CToolBarCtrl类为对话框创建工具栏

    ---恢复内容开始--- 首先CToolBarCtrl类内部维护了三个重要的数据结构:一个图像列表,一个字符串列表,一个TBBUTTON结构体的列表. 知道了这一点,下面的理解起来就轻松了.慢慢来: ...

  10. Freescale OSBDM JM60仿真器

    OSBDM-JM60 - 9S08JM60 Based OSBDM — It includes interfaces and firmware applied to all the targets s ...