析构函数:也是一种特殊的成员函数,执行与构造函数相反 的操作,通常完成一些清理任务,如释放分配给对象的内存空间
性质:1.析构函数与构造函数的名字相同,只是在它面前加上一个波浪号
2.析构函数没有参数,没有返回值,而且不能重载,因此在一个类中只能有一个析构函数
析构函数:也是一种特殊的成员函数,执行与构造函数相反 的操作,通常完成一些清理任务,如释放分配给对象的内存空间
性质:1.析构函数与构造函数的名字相同,只是在它面前加上一个波浪号
2.析构函数没有参数,没有返回值,而且不能重载,因此在一个类中只能有一个析构函数
引用的定义:为目标变量器别名,使之与目标变量地址关联简化指针的使用
引用的作用:应用作为函数参考值,作为函数返回值
1.new和delete的作用:
进行动态内存的分配和释放
2.new和delete的使用说明:
1.new可以自动计算所要分配内存类型的大小,而不必要使用sizeof()
2.new可以自动返回正确的指针类型,不需要进行指针类型转换
C++引入const修饰符(关键字):用于修饰常量,其值在运行过程中不允许改变
2.修饰形参,返回类型及成员函数
注意事项:1.常量必须声明时被初始化
2.如果定义的是整型常量,int可以省略
3.const的作用与define相似,const比交安全
常量指针:
指向的数据可以改变,但是所指的位置是不变的
抽象是对特定的实例抽取共同形成概念的过程,他是面向对象程序设计的一种基本思想
对象的交互:对象不是孤立的,他们之间存在着各种联系对象之间的相互交互是通过消息传递来进行的
面向对象编程
野指针:所指空间被释放后的指针,应置为NULL,或者还没有赋值。
喷泉模型认为软件开发过程自下而上,瀑布模型则是自上而下。
面向对象的编程方法有四个基本特征:抽象、继承、封装、多态性。
构造函数
定义:一种特殊的成员函数,主要用于对象空间的分配,初始化,初始化的是数据成员,通常为类的私有的成员初始化
性质
1.构造函数的名字必须与类名同名
2.构造函数被声明为公有函数
3.构造函数可以 有任何类型的参数,但不能具有返回类型
4.定义对象时,系统会自动地调用构造函数而不能像其他的成员函数那样被显示地调用
5.每一类都需要有构造函数,若没有提供则系统提供一个默认的构造函数,什么都不做,
析构函数
定义:也是一种特殊的成员函数,执行与构造函数相反的操作,通常完成一些清理任务,如释放分配给对象的内存空间等
性质
1.析构函数与构造函数的名字相同,只是在它的前面加上一个波浪号~
拷贝构造函数
拷贝构造函数只有一个参数,并且是对某个对象的引用
作用:使用被引用对象来去初始化另外的对象
类名::<拷贝初始化构造函数名>(const<类
名>&<引用名>)
如果没有定义拷贝构造函数,系统会默认一个
构造函数在什么调用:一个对象在创建的时候调用,什么时候开始对象创建,全局对象
相同作用域的对象,先定义的对象先构造
析构函数在什么时候调用
对类中成员的访问权限:三种
公有:public
即可以被类内的其他成员访问,也能被内以外的内容访问
私有:private
只能被类内的其他成员访问,而不能被其他内容访问
保护:protected
可以由类内的成员访问,以可以由本类的派生类的成员函数访问。
类定义的注意事项:
在类体中不允许对数据成员进行初始化
1.我们需要对类体成员进行初始化,必须借助于构造函数
class point
{
private:
int x=0;int y =0; //错误
}
见到class 关键字 类名 {类体
public 公有的类
private
protected
}
2.数据成员的类型可以是任意的,包含整型,浮点型,数组,指针,也可以是对象
子对象嵌套
class N;
class M
{
public:
''''''''
private:
class N
}
没有默认为私有的
对象定义:
include<iostream.h>
//定义一个类A
使用继承
shape类;属性---type,param
fafan
数据的抽象和封装
抽象是对特定的实例
例如:定义对象 类 需要到抽象
数据的封装
就是将数据和对数据的操作组成一个实体,数据的表示fang's
为什么引入对象和类?
弥补面向过程程序设计方法中的缺点
引入对象和类,将数据与方法紧密结合
VC++是目前较为流行的C集成开发环境,该环境是由微软公司开发的。
该开发环境除了提供标准的C语言的库函数以外,还提供了MFC,方便用户创建一些高级特性的类,在一定程度上减少了开发人员写任何一个类都要从头开始写的重复劳动。
1,发展历程
60年代,
80年代
对象:由一组属性数据和操作组成
程序的一个代码块
类:对具有公共属性和方法的一组基本相同的对象的描述
特征
抽象:隐藏与当前目标无关的部分,以便充分的注意与当前目标有关的方面
封装:把过程和数据包围起来,对数据的访问只能通过已经定义的界面,封装保证了模块具有较好的独立性使得程序维护修改较为容易
总结:面向对象的程序设计就是用一种面向对象的编程语言把软件系统书写出来
在面向对象的编程中,程序被看做是相互协作的对象集合,对象间的通信是通过消息来实现的
每个对象都是某个类的实例,所有的类构成一个通过继承关系相联系的层次结构
面向对象的编程方法有4个基本特征:抽象,继承,封装,多态性
1.下列对派生类的描述中,————是错误的。
D,派生类中继承的基类成员的访问权限到派生类保持不变。
2.派生类的构造函数的成员是初始化列表中,不能不能包含————。
C。基类的子对象初始化。
3.下列对继承关系的描述中,————是对的。
D。在私有继承中,基类中的保护成员对派生类的对象是可见的。
4.关于继承的二义性的描述,————是错误的。
B.解决二义性的最常用的方法是对成员名的限定法
5.设置虚基类的目的是————。
B。消除二义性
6.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化___.
D.一次
7.阅读如下程序:下面语句组中出现语法错误的是_____.
D.X a4(10);Y b2=a4;
8.分析以下程序运行结果;
9。分析以下程序运行结果:
继承是面向对象程序射进支持代码重用的重要机制
C++中使用继承性进行代码重用的方式就是派生
对类中成员的访问权限: