一.内联函数

内联函数和普通函数的使用方法没有本质区别,我们来看一个例子,下面展示了内联函数的使用方法:

#include <iostream>
using namespace std;
//下面展示内联函数的使用
inline double square(double x)
{
return (x*x);
}
int main()
{
int a=;
int b;
b=square(a);
cout<<b;//差点把C++当成Android了...... 就没有写cout,尴尬了
}

从上面我们可以看到我们定义一个内联函数只需要在普通函数的前面加上关键字inline就可以了,利用内联函数的优势则是可以让程序不需要跳转到另一个位置执行代码,直接遇到我们所定义的函数就可以进行执行了。因此会节省一些运行的时间。但是这个函数并没有得到广泛的使用,是因为使用这个,则会在另一方面增大系统的开销。一般前况下,如果执行函数代码的时间比处理函数调用的时间更长,则推荐使用这种方式,但如果执行函数代码的时间比处理函数调用的时间更短,则使用普通函数的效率会显得更高一些,因为我们算的是总体的程序运行时间。不然在第二种情况下,所有的程序资源都用于调用函数上面去了,我觉得实在是太花费时间了。

二.引用变量

1.一般情况下的引用变量是我们现有变量的一个拷贝,相当于我们可以利用一个新的变量名称来代替原变量的使用,下面是一个小例子:

#include <iostream>
using namespace std;
int main()
{
int rats=;
int &rodents=rats;//这里定义了引用变量rodents
cout<<"rats="<<rats;
cout<<",rodents="<<rodents<<endl;
rodents++;
cout<<"rats="<<rats;
cout<<",rodents="<<rodents<<endl;
  

cout<<"rats的地址是"<<&rats<<endl;
cout<<"rodents的地址是"<<&rodents<<endl;

 
}  

输出结果:

rats=,rodents=
rats=,rodents=102

rats的地址是0x6ffe34
rodents的地址是0x6ffe34

 

从中可以知道rats和rodents的值是相同的,就连地址都是相同的。

2.如果我们将第三个变量赋值给rodents变量,会有什么不同呢?

程序如下:

#include <iostream>
using namespace std;
int main()
{
int rats=;
int &rodents=rats;//这里定义了引用变量rodents
int c=41;//这里我们定义的是第三者
cout<<"rats="<<rats;
cout<<",rodents="<<rodents<<endl;
rodents++;
cout<<"rats="<<rats;
cout<<",rodents="<<rodents<<endl;
cout<<"rats的地址是"<<&rats<<endl;
cout<<"rodents的地址是"<<&rodents<<endl;
//下面进入第三者,一个很神奇的第三者
cout<<"下面我们进入第三者"<<endl;
rodents=c;
cout<< "rats="<<rats<<endl;
cout<<"rodents="<<rodents<<endl;
cout<<"rats的地址是"<<&rats<<endl;
cout<<"rodents的地址是"<<&rodents<<endl;
cout<<"c的地址是"<<&c<<endl;
}

结果如下:

rats=,rodents=
rats=,rodents=
rats的地址是0x6ffe34
rodents的地址是0x6ffe34
下面我们进入第三者
rats=
rodents=
rats的地址是0x6ffe34
rodents的地址是0x6ffe34
c的地址是0x6ffe30

这个时候我们可以看到第三者的地址和前两者的地址是不一样的,但是值却是一样的,因为这种情况就相当于将第三者直接复制给了第一者,其间的引用并没有对它产生任何在地址上的影响,这也十分容易理解。

 

C++ : 内联函数和引用变量的更多相关文章

  1. C++命名空间、函数重载、缺省参数、内联函数、引用

    一 .C++入门 1.C++关键字 2.命名空间 3.C++输入&输出 4.缺省参数 5.函数重载 6.引用 7.内联函数 8.auto关键字 9.基于范围的for循环 10.指针空值null ...

  2. C++学习笔记之——内联函数,引用

    本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫 ...

  3. 重构改善既有代码设计--重构手法02:Inline Method (内联函数)& 03: Inline Temp(内联临时变量)

    Inline Method (内联函数) 一个函数调用的本体与名称同样清楚易懂.在函数调用点插入函数体,然后移除该函数. int GetRating() { return MoreThanfiveLa ...

  4. C++ primer(八)--内联函数 引用变量 引用传递函数参数 函数重载/模板/模板具体化

    一.内联函数     常规函数和内联函数的区别在于C++编译器如何将他们组合到程序中.编译过程的最终产品是可执行程序--由一组机器语言指令组成.运行程序时,操作系统将这些指令载入到计算机内存中,因此每 ...

  5. 从零开始学C++之从C到C++(二):引用、内联函数inline、四种类型转换运算符

    一.引用 (1).引用是给一个变量起别名 定义引用的一般格式:类型  &引用名 = 变量名: 例如:int a=1; int  &b=a;// b是a的别名,因此a和b是同一个单元 注 ...

  6. 引用、数组引用与指针引用、内联函数inline、四种类型转换运算符

    一.引用 (1).引用是给一个变量起别名 定义引用的一般格式:类型  &引用名 = 变量名: 例如:int a=1;  int  &b=a;// b是a的别名,因此a和b是同一个单元 ...

  7. 特殊用途语言特性(默认实参/内联函数/constexpr函数/assert预处理宏/NDEBUG预处理变量)

    默认实参: 某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参.调用含有默认实参的函数时,可以包含该实参,也可以省略该实参. 需要特别 ...

  8. 位运算+引用+const+new/delete+内联函数、函数重载、函数缺省参数

    update 2014-05-17 一.位运算 应用: 1.判断某一位是否为1 2.只改变其中某一位,而保持其它位都不变 位运算操作: 1.& 按位与(双目): 将某变量中的某些位(与0位与) ...

  9. 堆(stack) 之 c 和 c++模板实现(空类默认成员函数 初谈引用 内联函数)

    //stack 的基本操作 #include <iostream> using namespace std; const int maxn = 3; typedef struct Stac ...

随机推荐

  1. Java内部抽象类的匿名类初始化

    说在前面的话,以前写过一次这个变态代码,后来重构,把那个new的语法简化了,最近又要整,差点都想不起来了,留个文档把 1.下面这个案例更变态,抽象类还有一个个泛型类:首先内部抽象类的定义: /* * ...

  2. Error:unsupported class file version 52.0问题的解决

    这个问题主要的原因是依赖包的编译版本比主程序的编译版本高,导致主程序无法正常编译或运行,解决这个问题无非两招: 1.提升主程序的编译器版本,用最新的编译器编译主程序,这样就可以兼容那个依赖包 2.降低 ...

  3. 拖拽模块move2

    之前的模块代码太死板了,由于内部定义了控件的ID,使用起来很不方便,so-----直接看代码 <script> var move =(function(){ function drop(b ...

  4. 在Ubuntu系统安装Sencha CMD

    Now type from the terminal prompt followed by Enter:   1 root@prompt:cd /java   1 root@prompt:tar zx ...

  5. 利用arcserver 自带tomcat实现上传shapefile、cad等文件,然后用soe解析。

    一.功能实现分析 1.soe中传入指定路径目录和文件名就能读取shp.cad并解析,然后返回JSON格式数据给flex端生成图形.(soe读取的是本地绝对路径) 2.所以首先要上传文件到soe发布所在 ...

  6. TensorFlow-谷歌深度学习库 命令行参数

    程序的入口: tf.app.run tf.app.run( main=None, argv=None ) 运行程序,可以提供'main'函数以及函数参数列表.处理flag解析然后执行main函数. 什 ...

  7. mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法

    转自:http://www.169it.com/article/5994930453423417575.html 为了测试sql语句的效率,有时候要不用缓存来查询. 使用 SELECT SQL_NO_ ...

  8. NIO之FileChannel类的理解和使用

    文章链接:http://blog.csdn.net/qq_16628781/article/details/70532307 知识点: FileChannel类及方法理解: 普通输入输出流复制文件: ...

  9. 关于java集合类HashMap的理解

    一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap  ...

  10. dubbo-admin和dubbo-monitor的安装

    一.安装dubbo-admin 去这里 http://download.csdn.net/download/u013081610/10044744 下载dubbo-admin.war 部署dubbo- ...