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

咸阳免费做网站搞一个公司网站得多少钱

咸阳免费做网站,搞一个公司网站得多少钱,专注高密做网站哪家强,互联网企业网站c中的对象的构造顺序与析构顺序 问题一 当程序中存在多个对象时#xff0c;如何确定这些对象的析构顺序#xff1f; 一.单个函数创建时构造函数的调用顺序 1.调用父类的构造过程 2.调用成员变量的构造函数(调用顺序与声明顺序相同) 3.调用类自身的构造函数 而析构函数与…c中的对象的构造顺序与析构顺序 问题一 当程序中存在多个对象时如何确定这些对象的析构顺序 一.单个函数创建时构造函数的调用顺序 1.调用父类的构造过程 2.调用成员变量的构造函数(调用顺序与声明顺序相同) 3.调用类自身的构造函数 而析构函数与对应构造函数的调用顺序相反多个对象析构时析构顺序与构造顺序想反。 下面分析一段简单的代码 #include stdio.h class Member {const char* ms; public:Member(const char* s){printf(Member(const char* s): %s\n, s);ms s;}~Member(){printf(~Member(): %s\n, ms);} };class Test {Member mA;Member mB; public:Test() : mB(mB), mA(mA){printf(Test()\n);}~Test(){printf(~Test()\n);} };Member gA(gA);int main() {Test t;return 0; }首先代码中没有父类那么调用成员变量的构造函数调用的顺序要与声明的顺序相同看代码知先声明的是全局变量Member gA(“gA”)然后是局部变量Member mA; Member mB注意mA和mB这两个变量得顺序不要被 Test() : mB(“mB”), mA(“mA”)这里的定义顺序搞混了我们的构造顺序是声明的顺序而不是定义的顺序那里的定义的顺序是为了给我们造成混淆的定义的顺序可以随便改变接着就是调用类自身的构造函数Test()它会执行printf(“Test()\n”); 好了到这一步说明构造函数调用完成。调用的顺序为gAmAmB,Test(). 而析构函数与构造函数的调用顺序相反所以析构函数的调用顺序为~Test(), mB, mA, gA. 对于栈对象和全局对象类似于入栈与出栈的顺序最后构的对象被最先析构 堆对象的析构发生在使用delete的时候与delete的使用顺序相关 问题二 const 关键字能否修饰类的对象如果能有什么特性 我们知道在c中const可以修饰一个只读变量也可以修饰一个真正意义上的常量。那么它能否修饰类的对象呢我们知道类只不过是由struct演变而来的一种用户自定义的数据类型从某种意义上来讲它也是一个变量既然是变量那么能不能用const修饰它呢 答案是肯定的 1.const关键字能够修饰对象 2.const修饰的对象为只读对象 3.只读对象的成员变量不允许被改变 3.只读对象是编译阶段的概念运行时无效 下面介绍一下C中const成员函数的定义 Type ClassName::function(Type p) const类中的函数声明与实际的函数定义都必须带有const关键字。文字太多不如直接上代码 #include stdio.hclass Test {int mi; public:Test(int i);Test(const Test t);int getMi(); };Test::Test(int i) {mi i; }Test::Test(const Test t) {mi t.getMi(); //能否编译通过 }int Test::getMi() {return mi; }int main() {const Test t(1);t.mi 100; //能否编译通过printf(t.getMi() %d\n,t.getMi()); //能否编译通过如何才能编译通过return 0; }我把程序放到linux中进行编译很显然编译不通过显示的错误有哪些呢? test.cpp: In copy constructor ‘Test::Test(const Test)’: test.cpp:19: error: passing ‘const Test’ as ‘this’ argument of ‘int Test::getMi()’ discards qualifiers test.cpp: In function ‘int main()’: test.cpp:5: error: ‘int Test::mi’ is private test.cpp:31: error: within this context test.cpp:31: error: assignment of data-member ‘Test::mi’ in read-only structure test.cpp:33: error: passing ‘const Test’ as ‘this’ argument of ‘int Test::getMi()’ discards qualifiers首先mi t.getMi();无法编译通过因为Test::Test(const Test t)中的的参数为const的引用const成员函数只能调用const成员函数。 然后t.mi 100;编译不通过因为int Test::mi’ is private并且‘Test::mi’ in read-only structure因为我们定义的是const成员函数const Test t(1);这才是我们想说的真正原因。 其次printf(t.getMi() %d\n,t.getMi());编译不通过 因为成员t在上面被定义的是const类型。 那么该如何让它编译通过呢在int getMi();函数后面加上const变为 int getMi()const;在int Test::getMi()后面加上const变为 int Test::getMi()const那么这条语句 printf(t.getMi() %d\n,t.getMi());就可以编译通过了 此时如果在函数int Test::getMi()中加入 mi 2;则编译又不会通过了因为该函数已经被定义为const类型不能改写成员变量的值了 由以上代码的实际试验得出具体结论如下 C中const成员函数的特性 const const对象只能调用const成员函数const 成员函数中只能调用const成员函数const 成员函数中不能直接改写成员变量的值。
http://www.pierceye.com/news/151829/

相关文章:

  • wordpress 插件站wordpress本地mp3
  • 爱站工具包的主要功能很有设计感的企业网站
  • 地下城钓鱼网站如何做iis添加网站无法访问
  • 招聘网站大全网站开发liucheng
  • erlang做网站优势深圳集团网站建设公司好
  • 烟台公司建网站seo网站推广 沈阳
  • 没有网站做APP企业网站模板建站
  • 国内炫酷的网站首页网站开发交易平台
  • 大型网站建设公司制作网站好大夫在线免费咨询
  • 有哪些设计的很优秀的网站诸暨市住房建设局网站
  • 建设网站网站建站延吉手机网站建设开发
  • 网站建设一意见08wordpress主题
  • 做网站备案不少天网络设计包括哪些
  • 仿腾讯视频网站源码个人制作网站工具
  • 泉州网站制作建设163注册企业邮箱
  • 漳州市建设局网站6热e国产-网站正在建设中-手机版
  • 给公司做网站数据分析江门网站设计制作
  • 怎么做新网站安宁网站建设熊掌号
  • com是什么网站网络科技公司可以去吗
  • 抖音创作者服务平台上海seo培训中心
  • 自己做网站app甘肃网站域名申请公司
  • 电子商务网站开发的课程介绍2023年新闻摘抄
  • 合肥如何做百度的网站推广百度知道官网首页登录入口
  • 织梦网站怎么做二级域名广州做网站费用
  • 湖南的商城网站建设网站建设与管理专业就业
  • 诸城企业网站建设wordpress经典编辑器插件
  • 做视频播放网站 赚钱全国建筑网站
  • 网站建站要多少钱2021安全员证报名入口
  • 成都建设网站那家好vs2019可以做网站吗
  • 个人网站开发教程济南高新网站制作