构造与析构
作者:互联网
构造和析构
C++中类和结构并没有太多的区别
C++里面类是私有属性的结构,结构是公有属性的类
类需要有定义 类=数据(变量)+行为(函数)
类定义分为:类说明和类实现
类说明:定义一个类类型,告诉程序这个类有什么样的数据,有什么样的行为
类实现:定义这个类类型里面的行为,是怎样的操作
class CStu { int id; char name[32]; float hight; void setStuId(int id); void setStuName(char *pName); };
1.class 是类的关键字,CStu是类名(标识符),驼峰命名法
2.类(结构)中的访问属性,public、private、protect
这三种访问属性可以任意出现在类的说明中,不限次数,不限位置,每一个访问属性所修饰的区间是从当前属性开始到下一个属性结束(类末尾)
3.类默认私有属性,只有类成员函数才能使用类中的私有数据
4.类中公有行为及数据可以在程序中被任何函数或语句所调用
5.类中的保护部分不能被类外调用,可以被类的子类调用
类实现:1.类说明2.类实现
创建对象
CNpc n;(n叫变量,叫对象,n站数据内存)
n.set(参数);
this指针,C++的保留字,它是一个指针,在任何一个类成员函数的运行过程中,这个指针指向调用用者对象
*this 表示当前调用者对象
this->成员名,表示当前调用者的某个成员
return this返回当前调用者对象的首地址
return *this返回当前调用者对象
类中通过构造和析构来创建和释放对象
构造:从无到有 完成对象的初始化
析构:从有到无 完成对象的清理
对象的初始化:
1.直接赋值
2.公有的初始化函数
3.构造函数
特征:
1.函数名和类名相同
2.没有函数返回值类型
3.一个新的对象被建立时,该对象的构造函数会自动地被调用,对这个对象进行初始化工作
4.型对象的建立包括两种情况,CA a;(对象说明语句) CA *pa=new CA;(对象指针指向动态开辟的堆区无名对象)
5.如果一个类说明中没有显示给出构造,系统将自动地给出一个缺省的什么都不干的构造函数
6.如果说明中包括多个构造函数,一般会有不同的参数列表和函数体
4.成员初始化列表,一些特殊的情况下,数据成员只能用初始化列表,不能直接赋值
必须写在构造函数的定义后面,用:表示,如果有多个成员,用,逗号隔开
构造函数能够对数据所进行的操作,成员初始化列表也可以,反之,并不行
成员初始化列表表象理解为构造
1.写在构造函数的定义后面
2.只能构造成员,只能咋表中调用构造函数
3.构造是函数,可以调用其他函数
析构 专门用来对对象的生存期结束后的善后工作
1.析构函数函数名和类名一致,在类名前加~
2.析构无返回值
3.析构无参数列表
4.一个类只有一个析构,可以缺省
5.如果缺省,系统提供一个什么都不干的隐式析构
6.对象生存期结束,自动调用析构
7.如果类中的数据成员没有指针,可以不写析构,如果有指针,且指针指向动态内存,在析构释放
拷贝构造 是一种特殊的构造函数 用自身这种类型构造自身
用户未定义拷贝构造,系统默认提供一个隐式的拷贝构造,他会将已存在与对象中的数据成员逐个的拷贝到新创建的对象中
CA(CA const& a11);
浅拷贝:只拷贝自身对象的数据成员,不拷贝自身对象关联的堆区数据
解决方案,自定义拷贝构造
标签:初始化,函数,对象,与析构,构造,析构,构造函数 来源: https://www.cnblogs.com/superdhj/p/13190134.html