面向对象基础

一、面向对象具有4个基本特征:
1.抽象
2.封装
3.继承
4.多态
抽象(abstract)
抽象是指有意“忽略”问题的某些细节和与当前目标无关的方面,以便把问题的本质表达得更清楚。
封装(encapsulation)
将数据和与这个数据有关的操作集合在一起,形成一个实体——对象,且尽可能隐藏对象的内部细节。
特点:封装的单位是对象,封装具有边界,利用接口实现与外界的链接。
在这里插入图片描述
该图体现了抽象和封装,用户可见的那些特性便是抽象出来的,而函数内部的具体实现便是对对象的封装。

继承(inherit)
继承是对象类之间的相交关系,使得某类对象可以继承另外一类对象的特征和功能。
类间具有继承关系的特性:
类间具有共享特征(包括数据和程序代码的共享):遗传
类间具有细微差别或新增部分(包括非共享的程序代码和数据):变异
类间具有层次结构(如同人类通过继承构成了家簇关系一样)
继承分类
从继承源上划分:单继承(一个派生类只有一个基类)、多继承(一个派生类有多个基类)
从继承内容上划分:取代继承、包含继承、受限继承、特化继承。

无限制的派生继承会在一定程度上损害对象中数据的隐蔽性//即破坏封装性

多态(polymorphism)
指对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动,该现象称为“多态性”。
简单的说:单接口,多实现
举例:sqrt_i (int i),sqrt_f (float f),sqrt (int i),sqrt (float f)
多态性的实现
运行时多态性:虚函数
编译时多态性:重载

二、常见的概念辨析
1.标识符由字母、数字和下画线“_”组成,它的第一个字符必须是字母或下画线,区分大小写。
2.声明:仅仅告诉编译器,有个某类型的“东西”(如变量、函数、对象等)会被使用,但是编译器并不会为它分配任何内存。即声明只是向编译器介绍一个名字(标识符)!
定义:与声明不同,定义是为“东西”(如变量、函数、对象等)分配了内存。
声明不一定不是定义,而定义一定是定义。

栈、堆、数据区
数据区:全局和静态变量存放于此,生命周期和程序一样长。
栈:系统自动分配内存创建速度快,但是一般只有1-2MB,递归时不建议使用栈对象,可能会溢出。
堆:由程序员自行安排,容量大速度满,使用后要销毁否则会内存泄露,如果指针没有置NULL会导致指针悬挂访问到错误的地址。

C\C++程序一般由四部分构成:预处理命令、语句、函数和注释。
函数 是C\C++程序的基本组成单位。

作用域问题
变量的作用域有:块、函数、文件、全局 4种;
变量存储类型分类:extern(外部变量)static(静态变量)register(寄存器变量)auto(自动变量)——变量的缺省\默认类型,函数的局部变量
外层作用域不能访问内层作用域。
利用运算符“::” 可访问当前作用域所隐藏的全局名,但不能访问隐藏的局部名。

例子:
int x=11; //全局变量x
void f2( int z )
{
int y=x;
int x=1; //局部变量x
::x=2; //-这里访问的是全局变量x
y=x;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值