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

建设网站需要哪个软件免费制作网站的平台

建设网站需要哪个软件,免费制作网站的平台,政府网站建设评价,网站需要备案吗欢迎来观看温柔了岁月.c的博客 目前 设有C学习专栏 C语言项目专栏 数据结构与算法专栏 目前主要更新C学习专栏,C语言项目专栏不定时更新 待C专栏完毕,会陆续更新C项目专栏和数据结构与算法专栏 一周主要三更,星期三,星期五&#x…

欢迎来观看温柔了岁月.c的博客
目前
设有C++学习专栏
C语言项目专栏
数据结构与算法专栏
目前主要更新C++学习专栏,C语言项目专栏不定时更新
待C++专栏完毕,会陆续更新C++项目专栏和数据结构与算法专栏
一周主要三更,星期三,星期五,星期天,
感谢大家的支持

C++构造和析构

  • 构造函数
    • 特点
    • 构造函数的创建和使用
      • 有参构造函数
      • 无参构造函数
      • 关于new的构造函数
    • 析构函数
      • 特点
    • 拷贝构造函数
      • 特点
    • 深拷贝和浅拷贝
    • 匿名对象
    • 析构与构造调用的顺序

构造函数

特点

1.名字和类名相同
2.没有返回值
3.构造函数是用来构造对象,构造对象时候,必定调用构造函数
4.不写构造函数,存在一个默认的构造函数,默认的构造函数是无参的,所以可以构造无参对象
5.默认的构造函数可以删掉,通过delete可以删除默认的构造函数
6.显示使用默认的构造函数,用defalt做显示调用
7.通常构造函数是public
8.如果自己写了构造函数,系统的默认构造函数就会不存在
9.构造函数决定对象的长相(构造函数有几个参数,构造的对象就要有几个参数)
10.构造函数通常做的事情,就是给数据成员初始化。
11.构造函数也是函数,可以进行重载,也可以进行缺省
12.通过缺省和重载,可以创建各种彰显不同的对象


#include<iostream>
#include<string>using namespace std;class MM
{
public:MM() = default; //显示使用默认构造函数MM() = delete;  //删除默认的构造函数private:int age;string name;
};
int main()
{system("pause");return 0;
}

注意:如果一个类中的默认构造函数被删除的话,是不能够构造对象的。
在这里插入图片描述

构造函数的创建和使用

有参构造函数

#include<iostream>
#include<string>using namespace std;class MM
{
public:MM(int m_age, string m_name){age = m_age;name = m_name;}void printDate(){cout << age << "\t" << name << endl;}private:int age;string name;
};int main()
{MM mm(10, "温柔了岁月");  //构造函数有2个参数,所以这路必须也要有两个参数,创建对象的过程就是调用构造函数过程mm.printDate();system("pause");return 0;
}

无参构造函数

#include<iostream>
#include<string>using namespace std;class MM
{
public:MM();  //无参构造函数
private:int age;string name;
};
int main()
{MM mm;system("pause");return 0;

关于new的构造函数

#include<iostream>
#include<string>using namespace std;class MM
{
public:MM();  //无参构造函数MM(int m_age, string m_name){age = m_age;name = m_name;}private:int age;string name;
};
int main()
{MM *p1 = new MM; //无参构造函数MM* p2 = new MM(18, "温柔了岁月"); //有参的构造函数system("pause");return 0;
}

析构函数

特点

1.~类名,当作析构函数的名称
2.没有参数
3.释放数据成员new的内存
在对象死亡前,自动调用
4.如果数据成员没有做new的操作,可以不写析构函数,不写析构函数,系统存在一个默认的析构函数

//析构函数
#include<iostream>
#include<cstring>using namespace std;class MM
{
public:MM(const char * str){int length = strlen(str) + 1;name = new char[length];strcpy(name, str);}~MM(){if (name != nullptr){delete name;name = nullptr;}cout << "析构函数" << endl;}private:char* name;
};
int main()
{MM* pmm = new MM("温柔了岁月");delete pmm;pmm = nullptr;  //立刻调用析构函数system("pause");return 0;
}

拷贝构造函数

特点

1.拷贝构造函数也是构造函数
2.拷贝构造函数的参数是固定的:对对象的引用
3.拷贝构造函数不写,会存在一个默认的拷贝构造函数
4.拷贝构造函数的作用:通过一个对象,创造另一个对象。

#include<iostream>
#include<string>using namespace std;class MM
{
public:MM(int m_age){age = m_age;}//拷贝构造函数,通过传入对象属性,确定创建对象属性MM(MM& object){age = object.age;}void printDate(){cout << age << endl;}private:int age;
};
//函数传参也可以隐式调用
void print(MM object)
{object.printDate();
}void Print(MM& object) //引用只是取别名,不调用拷贝构造函数,效率较高
{object.printDate();
}int main()
{MM mm(10);//产生对象MM pmm = mm;  //隐式构造MM pm(mm); //显式构造print(mm); //隐式调用拷贝构造函数system("pause");return 0;
}

深拷贝和浅拷贝

浅拷贝:
没有在拷贝构造函数中,使用new
默认的拷贝构造函数都是浅拷贝
深拷贝:
在拷贝构造函数中做了new的操作
内存释放问题:
浅拷贝会导致同一段内存重复释放

//浅拷贝问题

#include<iostream>
#include<cstring>using namespace std;class MM
{
public:MM(const char* m_name){name = new char[strlen(m_name) + 1];strcpy(name, m_name);}MM(MM& object){name = object.name;}~MM(){if (name != nullptr){delete name;name = nullptr;}}private:char* name;
};
int main()
{MM mm("温柔了岁月");MM pmm = mm;return 0;
}

在这里插入图片描述

delete把相同的两端数据都删除了,所以程序中断,浅拷贝的问题,要用深拷贝来解决。

解决方法

#include<iostream>
#include<cstring>using namespace std;class MM
{
public:MM(const char* m_name){name = new char[strlen(m_name) + 1];strcpy(name, m_name);}MM(MM& object){int length = strlen(object.name) + 1;name = new char[length];strcpy(name, object.name);}~MM(){if (name != nullptr){delete name;name = nullptr;}}private:char* name;
};
int main()
{MM mm("温柔了岁月");MM pmm = mm;return 0;
}

一旦类中有指针,做了内存申请,并且对对象做了拷贝操作,就必须使用深拷贝

匿名对象

1.匿名对象就是无名对象,匿名对象只能充当右值,
2.如果做特殊处理,会直接死掉,要想对匿名对象赋初值,必须存在移动构造拷贝或者有const存在的普通拷贝构造。

#include<iostream>using namespace std;class MM
{
public:MM(int m_age){age = m_age;}void printDate(){cout << age << endl;}MM(MM&& object){age = object.age;cout << "调用移动构造" << age << endl;}~MM(){cout << "析构函数" << endl;}
private:int age;
};int main()
{MM(10);  //匿名对象没有名字MM girl = MM(10); //赋值对象, girl接管匿名对象的所有权girl.printDate();system("pasuse");return 0;
}

析构与构造调用的顺序

1 . 一般情况,构造顺序和析构顺序是相反的
2.全局和静态变量,最后释放的
3.delete会立刻调用析构函数


文章转载自:
http://surjection.zLrk.cn
http://squirrely.zLrk.cn
http://chemic.zLrk.cn
http://liassic.zLrk.cn
http://pierian.zLrk.cn
http://sweetish.zLrk.cn
http://mathematicization.zLrk.cn
http://epilog.zLrk.cn
http://topgallant.zLrk.cn
http://yore.zLrk.cn
http://congenitally.zLrk.cn
http://prismatic.zLrk.cn
http://echolocate.zLrk.cn
http://astronaut.zLrk.cn
http://nimbus.zLrk.cn
http://nematode.zLrk.cn
http://mohammed.zLrk.cn
http://microelectrode.zLrk.cn
http://sever.zLrk.cn
http://defog.zLrk.cn
http://experiment.zLrk.cn
http://nescience.zLrk.cn
http://molybdenum.zLrk.cn
http://polychromasia.zLrk.cn
http://diphenylhydantoin.zLrk.cn
http://yearning.zLrk.cn
http://ileus.zLrk.cn
http://vagotomy.zLrk.cn
http://saditty.zLrk.cn
http://dinch.zLrk.cn
http://alkannin.zLrk.cn
http://anglomaniacal.zLrk.cn
http://sulphamate.zLrk.cn
http://cowhouse.zLrk.cn
http://dilutee.zLrk.cn
http://pliofilm.zLrk.cn
http://dormie.zLrk.cn
http://molybdenum.zLrk.cn
http://biologist.zLrk.cn
http://caliduct.zLrk.cn
http://countercyclical.zLrk.cn
http://preemphasis.zLrk.cn
http://indicium.zLrk.cn
http://screwloose.zLrk.cn
http://semeiotic.zLrk.cn
http://orate.zLrk.cn
http://zeldovich.zLrk.cn
http://wifie.zLrk.cn
http://tachyphylaxis.zLrk.cn
http://greenskeeper.zLrk.cn
http://filiate.zLrk.cn
http://sawfly.zLrk.cn
http://premillennialism.zLrk.cn
http://proverbs.zLrk.cn
http://usage.zLrk.cn
http://barely.zLrk.cn
http://agrotechny.zLrk.cn
http://backsword.zLrk.cn
http://telegraph.zLrk.cn
http://seajelly.zLrk.cn
http://suspicion.zLrk.cn
http://acis.zLrk.cn
http://emparadise.zLrk.cn
http://photocinesis.zLrk.cn
http://acetamide.zLrk.cn
http://herself.zLrk.cn
http://bavarian.zLrk.cn
http://hudaida.zLrk.cn
http://downstairs.zLrk.cn
http://malleability.zLrk.cn
http://turnsole.zLrk.cn
http://biquarterly.zLrk.cn
http://euclidian.zLrk.cn
http://overspend.zLrk.cn
http://telluriferous.zLrk.cn
http://sunburnt.zLrk.cn
http://mountaintop.zLrk.cn
http://armstrong.zLrk.cn
http://tartarize.zLrk.cn
http://aspartame.zLrk.cn
http://pinnatilobed.zLrk.cn
http://improvisatori.zLrk.cn
http://eddy.zLrk.cn
http://deemphasis.zLrk.cn
http://basho.zLrk.cn
http://raindrop.zLrk.cn
http://eld.zLrk.cn
http://extorsive.zLrk.cn
http://aroynt.zLrk.cn
http://mise.zLrk.cn
http://harvestry.zLrk.cn
http://hyperbolist.zLrk.cn
http://wanderlust.zLrk.cn
http://churidars.zLrk.cn
http://chesterfield.zLrk.cn
http://improbably.zLrk.cn
http://enzyme.zLrk.cn
http://includable.zLrk.cn
http://toponymy.zLrk.cn
http://squareflipper.zLrk.cn
http://www.dt0577.cn/news/71833.html

相关文章:

  • 数据库检索网站建设竞价网站推广
  • 自己做网站要钱吗惠州网站建设
  • 兼职做问卷调查的网站好公司官网制作开发
  • html5怎么做二手网站2022年每日新闻摘抄10一30字
  • 网站制作软件排行榜搜索引擎登录入口
  • 香港网站维护公司外贸建站服务推广公司
  • wordpress前台注册插件南昌百度seo
  • 深圳市城乡住房和建设局网站网络营销成功案例介绍
  • 哪家做网站公司百度广告服务商
  • 建一个手机网站需要多少钱新闻头条今天最新消息
  • 网站的展现形式处理事件seo软件
  • 网站用什么软件程序做杭州seo靠谱
  • 电子商务有限公司怎么注册重庆可靠的关键词优化研发
  • wordpress wp_list_comments企业网站优化
  • 做网站一定要效果图吗超级软文网
  • 廊坊网站建设公司墨子无锡百姓网推广
  • 做网站赚钱吗?培训机构不退钱最怕什么举报
  • 西安seo推广优化上海关键词优化公司bwyseo
  • 旅游做攻略网站销售课程培训视频教程
  • 网络营销是什么内容seo职位要求
  • 保定网站建设费用谷歌推广开户
  • 怎么简单做网站排名效果最好的推广软件
  • 做国外网站建设留电话的广告网站
  • 活动策划案格式模板和范文seo咨询服务价格
  • 专门做推广的网站江苏网站seo营销模板
  • 单页产品销售网站如何做推广宁波关键词优化企业网站建设
  • asp 做网站的缺点seo内部优化方案
  • 个人网页在线制作appseo优化
  • 站优化百度如何优化
  • 怎么给网站做短信网站模板图片