您的位置:首页 > 编程语言 > C语言/C++

【C++程序设计】-类和对象

2017-10-21 14:20 155 查看

1.类及其实例化

对象就是一个物体的实例,将一组对象的共同特征抽象出来,形成了类的概念

2.定义类

类先声明后使用

类是具有唯一标识符的实体

类中声明的任何成员不能使用extern、auto和register关键字进行修饰

类中声明的变量属于该类

某些情况下,变量可以被该类的不同实例所共享

类包含了数据成员和成员函数

不能在类声明中对数据成员使用表达式进行初始化(不能在类体内对数据成员进行赋值)

类成员的访问权限有:private(私有的)、public(公有的)和protected(保护的),对应的成员分别叫做:私有成员、公有成员、保护成员

如果没有使用关键字,类中所有成员默认声明为private权限

定义成员函数

返回类型 类名 :: 成员函数名(参数列表)例如:void Point :: Setxy(int a,int b)

在声明类的同时,在类体内给出成员函数的定义,则默认为内联函数

3.使用类的对象

对象和引用都使用运算符“.”访问对象的成员,指针则使用“—>”运算符;例如:A.Setxy(25,25); p—>Display();

类的成员函数可以直接使用自己类的私有成员

类外面的函数不能直接访问类的私有成员

类外面的函数只能通过类的对象使用该类的公有成员函数

4.构造函数

任何类必定有构造函数

构造函数能够被重载、不能被继承、名字与类名完全相同

一旦程序定义了自己的构造函数,系统就不再提供默认构造函数

类的构造函数可以在类体内(内联函数)声明时定义,也可以在类体外定义

构造函数是在产生对象的同时初始化对象的

5.构造函数和运算符new

运算符new用于建立生存期可控的对象,new返回这个对象的指针

6.复制构造函数

使用已有的对象来建立一个新对象

复制构造函数的原型如:A::A(A&)

通常拷贝函数的参数是:对象的引用

推荐函数原型为:Point(const Point&)

7.析构函数

构造型函数:构造函数、复制构造函数、析构函数

调用析构函数是由编译器来完成

一个类只能定义一个析构函数且不能指明参数

析构函数在对象的生存期结束时被自动调用

全局对象和静态对象的析构函数在程序运行结束之前调用

8.析构函数和运算符delete

当使用运算符delete删除一个动态对象时,它首先为这个动态对象调用析构函数,然后再释放这个对象占用的内存

Point * ptr = new Point[2];//new Point[2]首先分配2个Point类的对象所需的内存,然后分别为这2个对象调用一次构造函数。当使用delete释放动态对象数组时,必须告诉这个动态对象数组有几个元素对象,C++使用“[]”来实现,语句为:delete []ptr;(以上述例子来看,new了两个对象,调用了一次构造函数,但是释放的时候,按后建先析构的原则析构对象

在定义类时,没有定义析构函数,编译器为它产生一个函数体为空的默认析构函数

9.调用复制构造函数的3种情况

一个类的对象去初始化另一个对象的时候

函数的形参是类的对象,调用的时候,进行形参和实参的结合时,需要调用复制构造函数

如果函数的返回值是对象,当函数调用完成返回时,调用复制构造函数

函数参数使用对象的引用不产生副本

10.this指针

使用this指针,保证了每个对象可以拥有自己的数据成员,但处理这些数据成员的代码可以被所有的对象共享

11.对象的性质

同一个类的对象之间可以相互复制

可使用对象数组

可使用指向对象的指针

对象可以用作函数参数

对象作为函数参数时,可以使用对象、对象引用、对象指针

一个对象可以用作另一个类的成员

12.类的性质

类本身的成员函数可以使用类的所有成员

类的对象只能访问公有成员函数

其他函数不能使用类的私有成员,也不能使用类的公有成员函数,它们只能通过类的对象使用类的公有成员函数

虽然一个类可以包含另外一个类的对象,但这个类也只能通过被包含的对象使用那个类的成员函数,通过成员函数使用数据成员

类也可以为空类;例如:class Empty{}

类的花括号形成了类的作用域

类中个数据成员的生存期由对象的生存期决定

struct的默认控制权限是public

13.对象的标记图

只使用对象名;对象名:类名:类名

14.实例连接

实例连接反映对象之间的静态关系,实例连接有:一对一、一对多和多对多

消息连接描述对象之间的动态关系,用箭头的实线表示,从消息的发送者到消息的接收者

15.对象、类和消息

对象的属性是描述对象的数据成员

对象的属性的集合又称为对象的状态

16.对象的特征

有一个状态,由其相关联的属性值集合所表征

有唯一标识名,可以区别于其他对象

有一组操作方法,每个操作决定对象的一种行为

对象的状态只能被自己的行为所改变

对象的操作包括自身操作和施加于其他对象的操作

对象之间以消息传递的方式进行通信

一个对象的成员仍可以是一个对象

17.编译指令

嵌入指令:#include

宏定义:#define

条件编辑指令:#if、#else、#elif和#endif

define不是指令,而是一个预处理操作符,用于判定一个标识符是否已经被#define定义
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: