加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 站长资讯 > 动态 > 正文

适合具备 C 语言基础的 C++ 教程

发布时间:2021-04-09 12:55:06 所属栏目:动态 来源:互联网
导读:运行结果我们分析一下,第一条输出信息 Point(int x, int y)是因为执行了 Point p1(1,2);语句而调用的构造函数,++p这条输出信息同样也是因为执行了 ++p;而调用的构造函数,那紧接着的两条输出信息是如何产生的呢,我们回过头去看看++p的函数,可以看到 ++p

运行结果我们分析一下,第一条输出信息 Point(int x, int y)是因为执行了 Point p1(1,2);语句而调用的构造函数,++p这条输出信息同样也是因为执行了 ++p;而调用的构造函数,那紧接着的两条输出信息是如何产生的呢,我们回过头去看看++p的函数,可以看到 ++p的函数是一个返回值为 Point类型的函数,而上述中的输出语句 Point(const Point& p)和 ~Point()就是在创建这个返回值对象时调用的构造函数以及当返回值返回后调用的析构函数;而紧接着的输出信息是 p++和 Point()以及~Point(),p++这个输出信息自然是因为调用的后 ++重载运算符函数的构造函数而输出的打印信息,那紧接着的 Point()和 ~Point()是因为在后 ++重载运算符函数中,创建的局部变量 Point n,进而调用了 Point()函数,以及函数退出之后,局部变量销毁,调用了析构函数。

上述详细地分析了各个打印信息输出的原因,通过上述的打印信息我们可以清楚知道程序在什么地方调用了构造函数,在什么地方调用了析构函数,再次回顾上述的函数调用过程,可以看出来其实调用的Point(const Point& p)和~Point()是多余的,那要如何改进代码呢,我们只需要将前 ++运算符重载函数的返回值类型改为引用就行,这样就不会创建临时的变量,同时也就不会在调用构造函数和析构函数,改动之后的代码如下所示:看到上述结果中,之前在 ++p后输出的两条信息现在因为将返回值设置为引用之后就消失了,说明这样的方法避免了调用构造函数和析构函数,节省了程序运行的空间,那如果将后++重载函数设置为引用可不可行呢,很显然,如果返回的是 n的引用,那么这在语法中就是错误的,因为n是局部变量,局部变量在函数调用结束就销毁了,是不能作为引用对象的。如果返回的是 p呢,那么函数的运行结果将发生改变,换句话说就是不是实现的后 ++这个功能了。

最后,总结一下,对于一个函数来说,函数的返回结果如果作为值返回,那么代码的执行效率较低;如果作为引用返回,那么代码的执行效率较高,但是会存在一个问题,引用返回可能会导致函数运行出错,所以,在保证函数运行没有错误的前提下,为了提高效率应该使用的是引用返回。

紧接着,我们知道我们在使用 C++进行编码的时候,基本不会再采用 C语言中的语法 printf这个语句,随之替代的是 cout这个语句,我们也知道我们使用 cout进行输出的时候,往往采用的是下面这样的输出方式:

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读