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

李宁网站建设计划书三门峡市住房的城乡建设局网站

李宁网站建设计划书,三门峡市住房的城乡建设局网站,做精酿啤酒购买的网站,博客是哪个软件5.1 构造和析构 5.1.1 构造函数 #xff08;1#xff09;定义 1#xff09;C中的类可以定义与类名相同的特殊成员函数#xff0c;这种与类名相同的成员函数叫做构造函数#xff1b;2#xff09;构造函数在定义时可以有参数#xff1b;3#xff09;没有任何返回类型的…5.1 构造和析构 5.1.1 构造函数 1定义 1C中的类可以定义与类名相同的特殊成员函数这种与类名相同的成员函数叫做构造函数2构造函数在定义时可以有参数3没有任何返回类型的声明。 2调用 自动调用一般情况下C编译器会自动调用构造函数手动调用在一些情况下则需要手工调用构造函数。 5.1.2 析构函数 1定义 1C中的类可以定义一个特殊的成员函数清理对象这个特殊的成员函数叫做析构函数 语法~ClassName()2析构函数没有参数也没有任何返回类型的声明 2调用 析构函数在对象销毁时自动被调用 5.1.3 对象的构造和析构 1构造函数的分类 无参构造函数有参构造函数理解对象的初始化与对象赋值的不同 Test t1(4,5); Test t2 Test(5,6); // 对象的初始化 t2 t1; // 对象的赋值拷贝构造函数默认构造函数 二个特殊的构造函数 1默认无参构造函数 当类中没有定义构造函数时编译器默认提供一个无参构造函数并且其函数体为空 2默认拷贝构造函数 当类中没有定义拷贝构造函数时编译器默认提供一个默认拷贝构造函数简单的进行成员变量的值复制 2构造函数的规则 1当类中没有定义任何一个构造函数时c编译器会提供默认无参构造函数和默认拷贝构造函数2当类中定义了拷贝构造函数时c编译器不会提供无参数构造函数3当类中定义了任意的非拷贝构造函数即当类中提供了有参构造函数或无参构造函数c编译器不会提供默认无参构造函数4 默认拷贝构造函数成员变量简单赋值 总结只要你写了构造函数那么你必须用。 #include iostreamusing namespace std;class Test1 { public: };class Test2 { public:Test2(){cout Test2无参构造函数 endl;} };class Test3 { public:Test3(int a){} };class Test4 { public:Test4(const Test4 t){} };int main() {Test1 t1; //编译器会默认提供无参构造函数Test1 tt(t1); //编译器提供默认的拷贝构造函数浅拷贝Test2 t2; //一旦提供了无参构造函数编译器不再提供默认无参构造函数//Test3 t3; //一旦提供了有参构造函数编译器不再提供默认无参构造函数(所有这里会报错)//Test4 t4; //一旦提供了拷贝构造函数编译器不再提供无参构造函数(所有这里会报错)return 0; }运行结果 3构造析构阶段性总结 1构造函数是C中用于初始化对象状态的特殊函数2构造函数在对象创建时自动被调用3构造函数和普通成员函数都遵循重载规则4拷贝构造函数是对象正确初始化的重要保证5必要的时候必须手工编写拷贝构造函数 #include iostream #include cstdlibusing namespace std;class Array { private:int *data; //数组的起始地址int size; //数组的容量 public:Array(); //无参构造函数 函数名和类名一样 没有返回值 完成对象的初始化操作Array(int s); //有参构造函数Array(const Array a); //拷贝构造函数void setVal(int Index, int val);int getVal(int Index);~Array(); //析构函数 函数名是类名加~ 没有参数 没有返回值 };Array::Array() {cout Array的无参构造函数 endl;size 5;data (int *)malloc(sizeof(int) * size); }Array::Array(int s) {cout Array的有参构造函数 endl;size s;data (int *)malloc(sizeof(int) * size); }Array::Array(const Array a) {cout Array的拷贝构造函数 endl; }void Array::setVal(int Index, int val) {data[Index] val; }int Array::getVal(int Index) { return data[Index]; }Array::~Array() {cout Array析构函数 endl;if (data ! NULL){free(data);} }void f(Array a) {}int main() {Array a1; //创建对象的时候自动调用构造函数Array a2(10);//有参构造函数这个用的最多Array a3 Array(10);Array a4 (10);for (int i 0; i 5; i){a1.setVal(i, i 1);}for (int i 0; i 5; i){cout a1.getVal(i) ;}cout endl;cout ******** endl;f(a1); //函数传参会调用拷贝构造函数//Array a5(a2); //调用拷贝构造函数 用a2构造a5return 0; //释放对象的时候自动调用析构函数 }运行结果 5.2 深拷贝和浅拷贝 5.2.1 浅拷贝问题分析 完成数组类主函数调用拷贝构造函数观察代码会出现什么问题 默认复制构造函数可以完成对象的数据成员值简单的复制 对象的数据资源是由指针指示的堆时默认复制构造函数仅作指针值复制 注意这样在析构的时候会出现释放两次空间的情况出现报错 5.2.2 浅拷贝问题解决深拷贝 #include iostream #include stdlib.husing namespace std;class Array { private:int *data;int size; public:Array(int s){cout 有参构造函数 endl;size s;data (int *)malloc(sizeof(int) * size);}Array(const Array a) //深拷贝{cout Array拷贝构造函数 endl;size a.size;data (int *)malloc(sizeof(int) * size);for (int i 0; i size; i){data[i] a.data[i];}}~Array(){cout 析构函数 endl;if (data ! NULL){free(data);}} };int main() {Array a1(10);Array a2(a1); //编译器为每个类提供默认的拷贝构造函数 只做简单的赋值浅拷贝return 0; }运行结果 5.3 匿名对象 #include iostreamusing namespace std;class Test { public:Test(){cout Test无参构造函数 endl;}~Test(){cout Test析构函数 endl;} };int main() {Test(); //匿名对象本行代码执行完立即被释放Test();return 0; }运行结果
http://www.dnsts.com.cn/news/67149.html

相关文章:

  • 苏州婚庆公司网站建设案例百度seo营销推广
  • 仁怀网站建设不好出手自助云商城
  • 网站关键词标题怎么写沈阳微信网站制作价格
  • 南宁网站制作专业网站安全建设方案步骤
  • 信息图表设计网站营销策划是什么意思
  • 如何用ps做网站设计图网站开发公司官网
  • 无锡哪里做网站百度权重提升
  • 微网站开发需求文档电子工程
  • 深圳正规做网站的公司反无人机防御系统
  • 建设 政务数据共享网站国土局网站建设方案
  • 微信分销网站开发企业查询官网免费查询一下
  • 网站建设原因分析温江区规划建设局网站
  • 嘉定专业做网站wordpress 默认搜索引擎
  • 天台县城市建设规划局网站限时抢购网站源码
  • 谷歌账号注册网站打不开企业官网模板下载 简洁现代
  • 福州专业做网站的公司哪家好杭州营销
  • 长沙网站推广合作企业网站首页设计欣赏
  • 网站 建设意见台州本地做网站的
  • 枣庄高端网站建设广州地铁集团有限公司
  • 关于建设网站的报告书网页设计与制作基础教程答案
  • 产品展示网站方案微信二维码制作小程序
  • 母婴网站源码php几个有效网址谢谢
  • 石家庄网站建设蓝龙中国域名备案查询系统
  • 相亲网站绑定微信怎么做wordpress淘宝客防被k
  • 学院评估 网站建设整改建网站价格多少
  • 一个人可以做几个网站负责人站酷设计网站官网入
  • 商务网站制作公司昆明企业自助建站系统
  • 盛泽做网站莱芜二中网站
  • 专业图书商城网站建设网站未经授权推广别人的产品
  • 网站费用福州网站建设流程