C++

Object Oriented Programming,OOP
面向对象程序设计是一种计算机编程架构。面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

面向对象开发的特性:封装、继承、多态
数据封装是一种把数据和操作数据的函数捆绑在一起的机制;数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制
继承是以一个类来定义另一个类,达到重用代码功能和提高执行时间的效果
多态 同一操作作用于类的不同实例,将产生不同的执行结果,即一个接口,多种方法。
即不同类的对象收到相同的消息时,得到不同的结果。在程序中消息是调用函数,不同的行为即执行不同的函数体。

1 编译时的多态性 -> 静态多态性 -> 函数重载
2.运行时的多态性 -> 动态多态性 -> 虚函数

宏 & 内联函数

宏定义
优点:代码内嵌 避免了函数的调用 空间换时间
缺点:不会进行类型检查 易产生歧义 SQR(i++) 易使text段体积增大
#define SQR(i) ((i)*(i))

普通函数
优点:一段高度抽象的逻辑,不易产生歧义,text段体积变小 时间换空间
缺点:函数调用的压栈与出栈的开销大
int sqr(int i){ return i*i; }

内联函数
内嵌代码,兼具宏和函数的优点
inline int sqr2(int i) { return i*i; }

命名空间

实现了函数x,在另一个库中也存在一个函数x,编译器会无法判断使用哪一个x函数。
引入命名空间(namespace)用于解决上面问题,可作为附加信息来区分不同库中相同名称的函数、类、变量等。
使用命名空间即定义了上下文。本质上命名空间是定义了一个范围。
:: 作用域运算符,前面加命名空间名指定某个命名空间。不加命名空间,全局无名命名空间。

运算符重载

operator关键字用于定义重载运算符的函数。
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。
运算符重载实质上是函数的重载。
格式:函数类型 operator 运算符名称 (形参表列) {对运算符的重载处理}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春夏与冬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值