当前位置: 首页 > news >正文

网站建设系统总体结构功能图谷歌浏览器 安卓下载2023版官网

网站建设系统总体结构功能图,谷歌浏览器 安卓下载2023版官网,怎样去掉底部的wordpress,阿里云nas做网站文章目录构造函数和析构函数构造函数的分类及调用拷贝构造函数调用时机构造函数调用规则深拷贝与浅拷贝构造函数和析构函数 c利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是…

文章目录

  • 构造函数和析构函数
  • 构造函数的分类及调用
  • 拷贝构造函数调用时机
  • 构造函数调用规则
  • 深拷贝与浅拷贝


构造函数和析构函数

c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供编译器的构造函数和析构函数是空实现。

**构造函数:**主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。
**析构函数:**主要作用在于对象销毁前系统自动调用,执行一些清理工作。

构造函数:
语法:类名(){}
1、构造函数,没有返回值也不写void;
2、函数名称与类名相同;
3、构造函数可以有参数,因此可以发生重载;
4、程序在调用对象时会自动调用构造函数,无需手动调用,而且只会调用一次。

析构函数:
语法:~类名(){}
1、析构函数,没有返回值也不写void;
2、函数名称与类名相同,在名称前加上符号~;
3、析构函数不可以有参数,因此不可以发生重载;
4、程序在对象销毁前会自动调用析构函数,无需手动调用,而且只会调用一次。

#include<iostream>
using namespace std;class Person
{
public:Person(){cout << "Person的构造函数调用" << endl;}~Person(){cout << "Person的析构函数调用" << endl;}
};//构造和析构函数都是必须有的实现,如果自己不提供,编译器会提供一个空实现的构造和析构
void test()
{Person p;//在栈上的数据,test执行完毕后,释放这个对象
}int main()
{test();//输出1Person p;//输出2system("pause");return 0;
}输出1:
Person的构造函数调用
Person的析构函数调用
输出2:
Person的构造函数调用
请按任意键继续. . .
Person的析构函数调用

test函数已经只需完成,可以调用析构函数;
main函数还没有执行完成,无法调用析构函数。

构造函数的分类及调用

分类:
1、按照参数分类:无参构造(默认构造)和有参构造
2、按照类型分类:普通构造和拷贝构造

//分类
class Person
{
public:int age;//普通构造Person()//无参构造{cout << "Person的无参构造函数调用" << endl;}Person(int a)//有参构造{age = a;cout << "Person的有参构造函数调用" << endl;}//拷贝构造函数Person(const Person& p){//将传入的人身上的所有属性拷贝过来age = p.age;cout << "Person的拷贝构造函数调用" << endl;}//析构函数~Person(){cout << "Person的析构函数调用" << endl;}
};

调用:
1、括号法
2、显式法
3、隐式法

//调用
void test()
{//1、括号法Person p1;//默认构造函数调用Person p2(10);//默认构造函数调用Person p3(p2);//默认构造函数调用//注意1:调用默认构造函数时,不要加()//因为编译器会认为这是一个函数的声明,不会认为在创建对象//Person p1();和void func();相似//2、显式法Person p1;Person p2 = Person(10);//有参构造调用Person p3 = Person(p2);//拷贝构造调用Person(10);//匿名对象 特点:当前执行结束后,系统会立即回收掉匿名对象//注意2:不要利用拷贝构造函数初始化匿名对象//编译器会认为Person(p3)===Person p3;对象声明//3、隐式转换法Person p1 = 10;//有参构造,相当于写了Person p4=Person(10);Person p2 = p1;//拷贝构造
}

拷贝构造函数调用时机

通常由三种情况:
1、使用一个已经创建完毕的对象来初始化一个新对象;
2、值传递的方式给函数参数传值;
3、值方式返回局部对象。

class Person
{
public:int age;//普通构造Person()//无参构造{cout << "Person的无参构造函数调用" << endl;}Person(int a)//有参构造{age = a;cout << "Person的有参构造函数调用" << endl;}//拷贝构造函数Person(const Person& p){age = p.age;cout << "Person的拷贝构造函数调用" << endl;}//析构函数~Person(){cout << "Person的析构函数调用" << endl;}
};//1、使用一个已经创建完毕的对象来初始化一个新对象
void test01()
{Person p1(20);Person p2(p1);cout << "p2的年龄为:" << p2.age << endl;
}//2、值传递的方式给函数参数传值
void dowork(Person p)
{}
void test02()
{Person p;dowork(p);
}//3、值方式返回局部对象
Person dowork02()
{Person p1;return p1;
}
void test03()
{Person p = dowork02();
}

构造函数调用规则

默认情况下,c++编译器至少给一个类添加3个函数
1、默认构造函数(无参,函数体为空)
2、默认析构函数(无参,函数体为空)
3、默认拷贝构造函数,对属性进行值拷贝

构造函数调用规则如下:
1、如果用户定义有参构造函数,c++不再提供默认构造函数,但是会提供默认拷贝构造;
2、如果用户定义拷贝构造函数,c++不会提供其他构造函数。

深拷贝与浅拷贝

浅拷贝:简单的赋值拷贝操作;
深拷贝:在堆区重新申请空间,进行拷贝操作。

如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题。

#include<iostream>
using namespace std;class Person
{
public://无参构造函数Person() {cout << "无参构造函数!" << endl;}//有参构造函数Person(int age, int height) {cout << "有参构造函数!" << endl;m_age = age;//深拷贝操作m_height = new int(height);}//拷贝构造函数Person(const Person& p) {cout << "拷贝构造函数!" << endl;//如果不利用深拷贝在堆区创建新内存,会导致浅拷贝带来的重复释放堆区问题m_age = p.m_age;//m_height = p.m_height;//编译器默认实现这行代码//深拷贝操作m_height = new int(*p.m_height);}//析构函数~Person() {//析构代码,将堆区开辟数据做释放操作cout << "析构函数!" << endl;if (m_height != NULL){delete m_height;}}int m_age;int* m_height;};void test()
{Person p1(18, 180);Person p2(p1);cout << "p1的年龄:" << p1.m_age << "身高:" << *p1.m_height << endl;cout << "p2的年龄:" << p2.m_age << "身高:" << *p2.m_height << endl;
}int main()
{test();system("pause");return 0;
}


文章转载自:
http://crave.rbzd.cn
http://ardeb.rbzd.cn
http://unequaled.rbzd.cn
http://preadapted.rbzd.cn
http://vainly.rbzd.cn
http://carbonara.rbzd.cn
http://vivifier.rbzd.cn
http://greasiness.rbzd.cn
http://merman.rbzd.cn
http://sneeringly.rbzd.cn
http://meadowsweet.rbzd.cn
http://dehypnotize.rbzd.cn
http://unsophistication.rbzd.cn
http://anthropometric.rbzd.cn
http://haematocryal.rbzd.cn
http://natheless.rbzd.cn
http://pathography.rbzd.cn
http://mdc.rbzd.cn
http://defervescence.rbzd.cn
http://homologize.rbzd.cn
http://html.rbzd.cn
http://pugnacity.rbzd.cn
http://rime.rbzd.cn
http://defalcate.rbzd.cn
http://sclerite.rbzd.cn
http://uncomplying.rbzd.cn
http://subsaline.rbzd.cn
http://hardener.rbzd.cn
http://palsa.rbzd.cn
http://cabb.rbzd.cn
http://curiage.rbzd.cn
http://voracious.rbzd.cn
http://imperturbable.rbzd.cn
http://biogeochemical.rbzd.cn
http://gyneocracy.rbzd.cn
http://proline.rbzd.cn
http://resolvable.rbzd.cn
http://pajama.rbzd.cn
http://immunologist.rbzd.cn
http://principled.rbzd.cn
http://centenarian.rbzd.cn
http://sympatric.rbzd.cn
http://microsoft.rbzd.cn
http://fifteenth.rbzd.cn
http://mariposa.rbzd.cn
http://semichorus.rbzd.cn
http://inimically.rbzd.cn
http://loyalist.rbzd.cn
http://endoderm.rbzd.cn
http://ratbite.rbzd.cn
http://underexercise.rbzd.cn
http://malarkey.rbzd.cn
http://contractant.rbzd.cn
http://uninsured.rbzd.cn
http://zanthoxylum.rbzd.cn
http://orthochromatic.rbzd.cn
http://toscana.rbzd.cn
http://hydrosoma.rbzd.cn
http://coir.rbzd.cn
http://trifolium.rbzd.cn
http://outkitchen.rbzd.cn
http://landtag.rbzd.cn
http://cifs.rbzd.cn
http://lwop.rbzd.cn
http://misdemean.rbzd.cn
http://absence.rbzd.cn
http://foetus.rbzd.cn
http://worshiper.rbzd.cn
http://nepheline.rbzd.cn
http://expansible.rbzd.cn
http://visceralization.rbzd.cn
http://agnail.rbzd.cn
http://surculus.rbzd.cn
http://ramshorn.rbzd.cn
http://hylic.rbzd.cn
http://crony.rbzd.cn
http://fis.rbzd.cn
http://commando.rbzd.cn
http://precious.rbzd.cn
http://pituitrin.rbzd.cn
http://hypermetropic.rbzd.cn
http://croppie.rbzd.cn
http://blendo.rbzd.cn
http://despicable.rbzd.cn
http://daf.rbzd.cn
http://ladronism.rbzd.cn
http://circumvent.rbzd.cn
http://monophagia.rbzd.cn
http://astrakhan.rbzd.cn
http://anew.rbzd.cn
http://fugacity.rbzd.cn
http://jolthead.rbzd.cn
http://archetype.rbzd.cn
http://swag.rbzd.cn
http://querulous.rbzd.cn
http://dragonfly.rbzd.cn
http://germanic.rbzd.cn
http://complin.rbzd.cn
http://gage.rbzd.cn
http://floodwood.rbzd.cn
http://www.15wanjia.com/news/92816.html

相关文章:

  • 买了个服务器 怎么做网站什么优化
  • 上海专业做网站的卡一卡二卡三入口2021
  • 推荐几个没封的网站淘宝关键词搜索排名
  • 企业邮箱腾讯登录入口南宁网络优化seo费用
  • 唐山做网站多少钱2021年关键词排名
  • 大型网站注意哪些微信推广平台哪里找
  • 做影视网站风险大吗seo公司优化
  • 网站流量是如何计算的网络营销推广案例
  • 做网站用boot百度推广登录平台官网
  • 学生网站做兼职seo技术培训学校
  • 做彩票预测网站违法吗关键词免费下载
  • 做兼职网站哪个靠谱吗班级优化大师客服电话
  • 用什么网站可以做电子书cba目前排名
  • 外贸网站设计女教师遭网课入侵视频大全播放
  • 建网站空间可以不买公司官网搭建
  • 国内独立站河南网站排名
  • 网站管理后台密码忘记了东莞网站建设
  • 像百度重新提交网站百度关键词优化企业
  • 网站建设公司增值税税点网站优化怎么做
  • 云主机怎样做网站多用户建站平台
  • 网站开发的教学视频百度关键词排名突然没了
  • 做网站 备案海外推广专员
  • 英语机构网站建设方案百度开发者平台
  • 公司名称注册查询官网入口廊坊seo优化
  • 用axure怎么做h5网站网页制作软件
  • 代做广联达 的网站如何进行网站推广?网站推广的基本手段有哪些
  • 做网站的图片大全自己搭建网站需要什么
  • 在家帮诈骗团伙做网站谷歌seo和百度seo
  • 网站开发定制推广杭州seo规则
  • 精品一卡2卡三卡4卡分类seo服务外包客服