内容梗概
(1)面向对象程序设计四大特性
(2)类的定义
(3)类和结构体的异同
(4)成员函数
(5)内置成员函数
(6)成员函数的储存方式
(7)对象成员的引用
(8)通过指向对象的指针开访问对象中的成员
(9)通过对象的引用来访问对象中的成员
(10)公用接口与私有实现的分离(多文件结构)
(11)类声明和成员函数定义的分离
面向对象程序设计四大特性
(1)封装与信息隐藏
封装:将有关数据和代码封装在一个对象中,形成基本单位,各个对象独立,互不干扰,
将对象中部分隐藏,只留下少部分接口(函数名)称为信息隐藏(类的公用接口和私有实现的分离)
信息隐藏的好处
若是想扩充类的功能,只用修改本类中的数据成员和有关的成员函数,类外不用变
(2)抽象
表示同一类事物的本质
(3)继承与重用
(4)多态性
由继承产生不同的类,其对象对同一消息做出不同的响应
基本概念:
类:把设想的数据和操作放在一起形成整体,与外界相对隔离。
程序=算法+数据结构
第八章
在类的定义中如果既不指定为private也不指定public系统默认为是私有的
声明的一般形式:
class 类名
{
private :
私有的数据和函数
public :
公开的数据和函数
};
成员访问限定符: private和public
注:私有的只能被本类中的成员函数引用,而公开的可以被本类中的成员函数引用外还可以被类作用域的其他函数所引用
proteced(受保护的)
不能被类外访问但是可以被派生类的成员函数访问
关键词可以多次出现,但是不一定多个都要出现
定义对象
1)先声明类型然后定义对象
①class 类名 对象名
②类名 对象名
(2)在声明类的同时定义对象
(3)不出现类名,直接定义对象
在定义对象的时候编译系统会为这个对象分配储存空间,以存放对象中的成员
类和结构体的异同
如果不做private或者public的声明,
结构体:
系统默认为public的
类:
系统默认为private的
成员函数
工具函数:有的函数并不是为外界调用的,而是为本类的成员函数所调用的,支持其他函数的操作
🌁在类外定义成员函数
举例:
class student
{
public :
void display();//公用成员函数原型声明
private :
int num;
string name;
char sex;
};
void student::display()
{
cout<<num<<endl;
cout…//函数体
}
student stu;//定义类对象
注:
在直接定义函数时不需要在函数名的前面加上类名,但是成员函数在类外必须加上类名,要限定,“::”是作用域限定符,用它声明函数是哪个类的如果没有类名的同时也没有作用域运算符
::display()
不属于任何类不是成员函数而是全局函数,类体的位置应该放在函数定义之前
内置成员函数
如果在类体中定义的成员函数不包括循环等控制结构,c++将自动的将它们作为内置函数
内置函数要用inline
注:对类内定义的函数可以省略
,如果在类外定义内置函数则要关键词进行声明(必须将类定义和成员函数的定义放在同一个头文件中)
只有在类外定义的函数规模很小而且调用效率高时才会被指定为内置函数
成员函数的储存方式
同一类的不同对象的数据成员的值一般是不同的,但不同的对象的函数的代码是相同的,不论调用哪一个对象的函数的代码其实调用的都是相同内容的代码
如何获得类对象的占用字节数
cout<<sizeo(time//类的名称)<<endl;
this指针
用来指向不同的对象
注:
①不论成员函数在类外定义还是在类内定义,成员函数的代码段的储存方式是相同的,都不占用对象的储存空间
②不要将成员函数的储存方式和inline函数的概念混淆
②不论是否用inline声明,成员函数的代码段都不占用对象的储存空间,它只影响程序的执行效率,而与成员函数是否占用对象的储存空间无关
对象成员的引用
🐾成员运算符:“.”
一般形式
对象名.成员名
(在类中应当至少有一个公用的函数成员,作为对外的接口否则无法对对象进行任何的操作)
通过指向对象的指针开访问对象中的成员
Tine t,*p;(定义一个类的对象,和一个指针)
p->hour ;(*p).hour ; t.hour;
都可以表示
通过对象的引用来访问对象中的成员
例:
Time t1;// 定义对象t1
Time &t2=t1;//定义Time类引用t2,并初始化为t1
cout<<t2.hour;//输出对象t1中的成员hour
公用接口与私有实现的分离(多文件结构)
公用接口:
公用成员函数,也就是类的对外接口
接口与实现分离:(实现了信息隐蔽)
一切与用户无关的部分都封装在机箱中,用户看不见
类的功能实现:
通过成员函数对数据成员进行操作
类声明和成员函数定义的分离
用户使用类库的公用接口:
类声明头文件
c++程序的三个部分
①类声明头文件(后缀为.h)
②类实现文件(后缀为.cpp)
③主函数(后缀为.cpp)
注:
用include 指令包括类声明头文件
并且在编译时把类的使用文件和类实现文件按多文件程序的规定组成一个统一的程序,经过编译连接后运行
类库:
①类声明的头文件
②已经经过编译的成员函数
几个名词
❄方法
类的成员函数g
❄只有被声明为“公用”的方法才能被对象外界所激活,外界是通过发“消息”(一个命令)message来激活有关方法的
stud.disply();
stud是对象
diaplay()是方法
整体是一个消息