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

公司建设网站费用wordpress 文章 总数

公司建设网站费用,wordpress 文章 总数,自己有服务器如何架设网站,网站建设哪个公司比较好目录 拷贝对象时编译器做出的一些优化 参数传递优化 返回值优化 拷贝对象时编译器做出的一些优化 #x1f4cc; 下面的优化结果由编译器决定#xff0c;不同的编译器优化结果可能不同#xff0c;视具体情况而定 参数传递优化 在前面的explicit关键字部分提到过编译器…目录 拷贝对象时编译器做出的一些优化 参数传递优化 返回值优化 拷贝对象时编译器做出的一些优化 下面的优化结果由编译器决定不同的编译器优化结果可能不同视具体情况而定 参数传递优化 在前面的explicit关键字部分提到过编译器会对在单行的构造拷贝构造优化为构造 #include iostream using namespace std;class test { private:int _num; public:test(int num):_num(num){}void print(){cout _num endl;} };int main() {test t 1;t.print();return 0; } 输出结果 1 在给函数形参传递实参时如果直接传递已经创建的对象时编译器不会对其进行优化 #include iostream using namespace std;class test { private:int _num; public:test(int num):_num(num){cout 构造函数 endl;}void print(){cout _num endl;}test(const test t){_num t._num;cout 拷贝构造函数 endl;}~test(){cout 析构函数 endl;} };void func1(const test t) {cout func1 endl; }int main() {test t1(1);func1(t1);return 0; } 输出结果 构造函数 拷贝构造函数 func1 析构函数 析构函数 在上面的代码中首先test类创建了一个对象为t1此时调用构造函数当t1作为函数实参传递给func1函数此时会调用拷贝构造函数将t1对象拷贝给形参t接着进入func1函数栈帧空间执行func1函数体的语句当func1函数结束执行后调用析构函数销毁形式参数对象t最后调用析构函数销毁局部对象t1 对上面的代码进行改进直接传递整型1给func1函数如下面代码 #include iostream using namespace std;class test { private:int _num; public:test(int num):_num(num){cout 构造函数 endl;}void print(){cout _num endl;}test(const test t){_num t._num;cout 拷贝构造函数 endl;}~test(){cout 析构函数 endl;} };void func1(const test t) {cout func1 endl; }int main() {func1(1);return 0; } 输出结果 构造函数 func1 析构函数 在上面的代码中直接将1作为对象传递给自定义类型的形参t时常规的步骤为调用构造函数用整型1初始化一个临时对象再调用拷贝构造函数将临时对象中的内容拷贝给形参对象但是此处编译器会对其进行优化为直接调用构造函数用整型1初始化形参对象t 同理使用匿名对象作为实际参数传递给自定义类型的形参时编译器也会有所优化 #include iostream using namespace std;class test { private:int _num; public:test(int num):_num(num){cout 构造函数 endl;}void print(){cout _num endl;}test(const test t){_num t._num;cout 拷贝构造函数 endl;}~test(){cout 析构函数 endl;} };void func1(const test t) {cout func1 endl; }int main() {func1(test(2));return 0; } 输出结果 构造函数 func1 析构函数 在上面的代码中使用整型2创建了一个匿名对象常规步骤为调用构造函数使用整型2创建匿名对象接着调用拷贝构造函数将匿名对象中的内容拷贝给形式参数但是编译器优化为直接使用整型2为形式参数初始化 但是如果函数的形式参数为引用时则不会有任何优化直接调用构造函数进行初始化对象再由自定义类型的引用形参接收实参对象的地址 注意使用引用传参时一定要在形式参数处加const修饰 #include iostream using namespace std;class test { private:int _num; public:test(int num):_num(num){cout 构造函数 endl;}void print(){cout _num endl;}test(const test t){_num t._num;cout 拷贝构造函数 endl;}~test(){cout 析构函数 endl;} };void func1(const test t) {cout func1 endl; }int main() {test t1(1);func1(t1);cout endl;func1(1);cout endl;func1(test(1));return 0; } 输出结果 构造函数 func1构造函数 func1 析构函数构造函数 func1 析构函数 析构函数 返回值优化 #include iostream using namespace std;class test { private:int _num; public:test(int num):_num(num){cout 构造函数 endl;}void print(){cout _num endl;}test(const test t){_num t._num;cout 拷贝构造函数 endl;}test operator(const test t){cout 赋值运算符重载函数 endl;if (this ! t){_num t._num;}return *this;}~test(){cout 析构函数 endl;} };test func() {cout func endl;test t(1);return t; }int main() {func();return 0; } 当调用的函数有返回对象时使用该对象初始化对象 #include iostream using namespace std;class test { private:int _num; public:test(int num):_num(num){cout 构造函数 endl;}void print(){cout _num endl;}test(const test t){_num t._num;cout 拷贝构造函数 endl;}test operator(const test t){cout 赋值运算符重载函数 endl;if (this ! t){_num t._num;}return *this;}~test(){cout 析构函数 endl;} };test func() {cout func endl;test t(1);return t; }int main() {test t1 func();return 0; } 在上面的代码中使用func函数的返回值初始化t1对象常规的过程为调用拷贝构造函数将func函数的返回值放入一个自定义类型的临时变量中再通过拷贝构造函数将临时变量中的内容拷贝给t1对象但是这里编译器会优化为调用一个构造函数将func的返回值作为初始化值直接初始化t1对象 但是如果将两个步骤分开如下面的代码 #include iostream using namespace std;class test { private:int _num; public:test():_num(){cout 构造函数 endl;}void print(){cout _num endl;}test(const test t){_num t._num;cout 拷贝构造函数 endl;}test operator(const test t){cout 赋值运算符重载函数 endl;if (this ! t){_num t._num;}return *this;}~test(){cout 析构函数 endl;} };test func() {cout func endl;test t;return t; }int main() {test t1;t1 func();return 0; } 在上面的代码中因为t1对象需要完成实例化所以会调用构造函数接着执行t1 func()语句因为赋值运算符有从右往左的结合性所以先执行func函数在func函数中会再次调用构造函数创建一个对象注意中间有一个过程为调用拷贝构造将返回对象拷贝到临时对象中再调用析构函数销毁局部对象t此时执行赋值语句此时调用赋值运算符重载函数将t对象的内容给t1对象 当返回的是匿名对象使用该匿名对象初始化对象 #include iostream using namespace std;class test { private:int _num; public:test():_num(){cout 构造函数 endl;}void print(){cout _num endl;}test(const test t){_num t._num;cout 拷贝构造函数 endl;}test operator(const test t){cout 赋值运算符重载函数 endl;if (this ! t){_num t._num;}return *this;}~test(){cout 析构函数 endl;} };test func() {cout func endl;return test(); }int main() {test t1 func();return 0; } 输出结果 func 构造函数 析构函数 在上面的代码中先执行func函数常规步骤为执行test类中的构造函数创建一个匿名对象接着调用拷贝构造将匿名对象拷贝到临时对象中返回接着调用拷贝构造将返回值拷贝给t1对象但是此处编译器会优化为直接用返回的匿名对象的内容作为初始值初始化对象t1 总结 为了编译器更好得优化在传参数时可以考虑使用引用变量作为参数当使用到返回值时如果能用引用就使用引用不能使用引用需要返回值时可以考虑返回匿名对象
http://www.pierceye.com/news/797033/

相关文章:

  • 装修装饰网站建设东莞环保公司
  • 网站开发大公司需要资格证吗申请域名免费
  • 建设维护网站未签订合同网站上线之前做哪些工作
  • dede 网站图标网站安装php
  • 网站管理更新维护湖南网站建设策划
  • 桥头东莞网站建设网站建设的开发方式和费用
  • 无锡网站优化哪家好wordpress会员内容
  • 网站需求分析的重要手机网站建设的规划
  • 国内大一html网站简单设计用那种语言做网站比较好
  • 网站的flash陕西煤化建设集团铜川分公司网站
  • 网站还能赚钱吗logo公司商标设计
  • 数字校园建设专题网站wordpress游览器标签页
  • 企业网站分析报告途牛网站大数据建设
  • 免费创建论坛网站wordpress sql插件
  • 有移动端网站 怎么做app做网站的困难
  • 金种子酒业网站建设苏州专业的网站建设公司
  • 住房与住房建设部网站首页给网站做收录较好的软件
  • 课程网站的设计网站开发遇到的难题
  • 学网站建设要什么iis 二级网站 发布
  • 怎么仿做网站wordpress文章进不去
  • 网站建设费算办公费吗html5商城网站模板
  • 188旅游网站源码下载做个爬架网站如何做
  • 中国做的比较好的网站设计公司有哪些可以做翻译兼职的网站吗
  • 深圳做网站建设公司dw学生个人网页制作视频
  • html网页设计代码作业网站衡水武邑县建设局网站
  • 网站后台登陆验证码wordpress 前台加载慢
  • 网站推广去哪家比较好专门做网站的公司叫什么
  • 前端做项目的网站资源公司做网站的步骤
  • 资源分享网站怎么建设网站建设百度云
  • 宣讲家网站官德修养与作风建设短视频seo关键词