ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

构造与析构

2020-06-24 21:51:31  阅读:252  来源: 互联网

标签:初始化 函数 对象 与析构 构造 析构 构造函数


构造和析构
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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有