
-
面向对象三大特性:封装、继承、多态
抽象:概括提炼公共性质并加以描述。
封装:将抽象出的数据成员、行为成员相结合,整合成一个整体,类。封装的实现:类+类的成员(数据、函数)
继承:保持已有类的特性,构造新类的过程,用于实现代码重用。(对于子类而言继承基类)吸收、调整、新增
派生:已有类的基础上新增特性而产生新类的过程。(对于父类而言派生子类)
多态性: -
C++与Java
-
公有、私有与保护
公有:与外部接口;私有:本类访问;保护:本类和派生类访问。
派生类访问基类公有的和保护的成员(public、protected)
-
一般情况下,类的数据成员应该为私有成员。
-
成员函数的申明与实现:
①类申明中直接写出函数体,形成内联成员函数;
② 可以在类声明外以返回类型 类名::函数名(形参表){}形式给出函数体实现。(必须加类名限定) -
构造函数
①不能被继承;②不能说明为虚函数;③不能显示地调用构造函数;④不能取一个构造函数的地址。 -
析构函数
①函数名为类名前加~;②基类的析构函数不能被派生类继承。
-
拷贝构造函数
形参为本类对象的引用的一种特殊构造函数。用一个已存在的对象,去初始化同类的一个新对象。
申明格式:类名 (类名&对象名}
实现格式“类名::类名 (类名&对象名) {函数体}” -
动态存储分配 new/delete
-
对象数组
数组可以由对象组成。有多少元素会调用多少次构造函数。 -
指针与引用
| * | & | |
|---|---|---|
| 申明语句 | 申明指针类型变量 | 申明引用 |
| 执行语句 | 获取指针所指对象的值 | 获取对象地址 |
-
对象指针
存放对象地址的变量,可以访问到所有对象的所有公有成员。
声明:类名* 对象指针名
使用:对象指针名->成员名
初始化::对象指针使用前必须初始化,指向一个已经申明过的对象。 -
this
隐含于类的成员变量中,指向正在被成员函数 *** 作的对象;
系统调用某个成员函数时,先将该对象的地址赋予this指针,然后调用成员函数;
成员函数通过隐含使用this指针来访问该对象的其他成员;
通常不能被显式地声明,也不直接用this来引用对象的成员。
this this -
友元 (friend关键字)
破坏数据封装和数据隐藏的机制。
通过将一个模块B声明为另一个模块A的友元,能够引用到A中本是被隐藏的信息。
可以使用友元函数和友元类;
尽量不使用或少使用友元。 -
友元函数
模块A为类,模块B为函数。在类A中声明由friend关键字修饰的非成员函数,也就是友元函数B,在B的函数体中能够通过对象名访问类A的private和protected成员。
-
友元类
-
static关键字
-
静态数据成员。
被该类所有对象共享,不属于任何一个具体对象,属于类;只有一个静态数据存储空间;类外定义和初始化,不由构造函数分配。
访问方式:类名::静态公有数据成员
初始化:类型 类名::静态数据成员名 = 初始值; -
静态成员函数
由一个类的所有对象共享;维护对象之间共享的数据。
类外调用:类名::静态公有成员函数名(实参表)对象名::静态公有成员函数名(实参表)
类内调用:直接调用静态成员函数
可以访问:该类的静态数据和函数成员;访问非静态数据成员,必须通过参数传递方式得到对象名,在通过对象名访问。 -
const关键字
① 常对象,数据成员不能被修改(通过成员函数也不行)类型说明符 const 对象名
② 常成员函数,不能修改数据成员,也不能调用其他非const成员函数,常对象只能调用其常成员函数。可以用于函数重载的区分。
类型说明符 函数名 (形参表) const
③ 常数据成员,不能修改赋值;构造函数的常数据成员的初始化只能通过初始化列表进行。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)