C++引用变量(转)
c++中引用变量的使用:
定义: int rate=80; int & pt=rate 1.pt 是引用变量,申明引用变量时必须将其初始化.pt 和rate 的值指向相同的内存变量. 引用的最多用处就是作为函数的参数(结构和对象).通过引用变量作参数可以是函数使用原始数据.而不是拷贝. 2.引用的特点更接近于const 指针,一旦与某个变量关联起来就将一直效忠于它,可以通过初始化来设置引用,但是不能通过赋值来设置 int other=30; pt=other ; 此时,rate的值和 pt的值都改为了30 但是地址还是原来rate的地址.而不是other的地址. 3.如果程序不想改变传递给它的信息,但是又想使用引用,那么则应该使用常量引用 int test(const int & p) // 当改变p值是,编译器将生成错去消息 4.如果实参和应用参数不匹配,c++将为此产生临时变量,这个只有在参数为const 引用时才允许这么做,在下列情况下生成临时变量,并且函数参数将引用该变量. ****当参数不是const引用时,如果不是左值(又无法生成临时变量)将导致编译错误*****(强调了第三点,即尽量用const) .实参的类型正确,但是不是左值 .实参类型不正确,但是可以转化为正确类型 左值概念:除了字面常量和包含多项式的表达式可以被引用的数据对象 5.尽量将函数返回的引用声明为const,避免你通过返回的引用而修改它的值.返回引用其实是返回被引用变量的别名 const sysop & use(sysop & pref) sysop pref={}; sysop test=use(pref); 相当于 user(pref); test=pref; 6.继承的特征就是基类的引用可以指向派生类对象,而无需强制类型转化.这种好处是可以定义一个接受基类引用座位参数的函数,调用函数是既可以将基类对象作为参数,也可以将派生类作为参数 使用原则: 对于按值传递而不修改的函数时: .数据对象小,按值传递 .数据对象是数组,则定义const 的指针 .如果数据对象为较大的结构,则可以使用const 指针或者cosnt 引用 , .如果是类对象,则使用const 引用. 对于修改值的函数 .如果是内置数据,则使用指针 .数组,也只能使用指针 .结构 使用指针或者引用 .对象.使用引用 |
C++引用变量(转)的更多相关文章
- Java基础-被final修饰的引用变量的指向
final修饰的引用变量一旦初始化赋值之后就不能再指向其他的对象,那么该引用变量指向的对象的内容可变吗?看下面这个例子: public class Test { public static void ...
- PHP GC垃圾回收机制之引用变量回收周期疑问
普通的引用变量的销毁大家都知道, 当unset的时候如果refcount = 0 则认为无用, 销毁. 但是手册中提到一点会有递归引用的问题,很是奇葩 代码如下 <?php $a = 1; $a ...
- c#问答篇:对象与引用变量-----初学者的困惑
转自:http://www.cnblogs.com/huangyu/archive/2004/08/02/29622.html 从宏观的角度来看,对象是类的实例.比如: //定义一个名为Someone ...
- C++ primer(八)--内联函数 引用变量 引用传递函数参数 函数重载/模板/模板具体化
一.内联函数 常规函数和内联函数的区别在于C++编译器如何将他们组合到程序中.编译过程的最终产品是可执行程序--由一组机器语言指令组成.运行程序时,操作系统将这些指令载入到计算机内存中,因此每 ...
- C++引用变量学习
版权所有,转载请注明来源 (1)reference variable(rv) 主要用处是作为方程的形式参数,使用rv 可以直接对原数据进行操作而不是该数据的拷贝,节省了时间和空间,尤其是对于结构体以及 ...
- C++学习笔记29,引用变量(1)
引用变量在创建的时候就必须初始化.无法创建一个未被初始化的引用. #include <iostream> using namespace std; int main() { int x=1 ...
- [DB][mybatis]MyBatis mapper文件引用变量#{}与${}差异
MyBatis mapper文件引用变量#{}与${}差异 默认,使用#{}语法,MyBatis会产生PreparedStatement中.而且安全的设置PreparedStatement參数,这个过 ...
- PHP关于foreach使用引用变量的坑
写PHP好多年,但仍然会犯低级错误,今天遇到个 foreach中引用变量时的坑,PHP版本为 5.6.12 代码如下: <?php $arr = ['a', 'b', 'c', 'd', 'e' ...
- sed中引用变量
sed 中引用变量 eval sed 's/string/$REPLACE/g' file awk 中引用变量 awk 在匹配字符串的时候,有时候需要需要引用变量. $pid= eval " ...
随机推荐
- Linux下使用Magent+Memcached缓存服务器集群部署
1.编译安装libevent cd /root/soft_hhf/ wget http://cloud.github.com/downloads/libevent/libevent/libeven ...
- Android的快速开发框架afinal
afinal 是一个android的 orm 和 ioc 框架.而且封装了android中的httpClient,使其更加简单易用. afinal是android应用开发的终极框架. FinalDB使 ...
- IOS之表视图添加索引
我们要实现的效果如下. 1.修改ControlView.h,即添加变量dict,用于存储TabelView的数据源. #import <UIKit/UIKit.h> @interface ...
- MVC4.0 利用HandleErrorAttribute和log4net实现记录异常日志功能
1.MVC4.0中HandleErrorAttribte已经帮我们处理了异常问题,当我们新建一个非空的MVC项目时候,在FilterConfig中会发现这样的代码 public class Filte ...
- [转]ASP.NET MVC Spring.NET NHibernate 整合
请注明转载地址:http://www.cnblogs.com/arhat 在整合这三个技术之前,首先得说明一下整合的步骤,俗话说汗要一口一口吃,事要一件一件做.同理这个三个技术也是.那么在整合之前,需 ...
- AngularJs学习笔记-慕课网AngularJS实战
第1章 快速上手 放弃了IE8以及以下,不支持. 4大核心特性: 1.MVC Model: 数据模型 View:视图 Controller:业务逻辑和控制逻辑 好处:职责清晰,模块化. 2.模块化 3 ...
- arm-elf-gcc汇编代码个人理解
arm-elf-gcc汇编代码个人理解 有关arm-elf-gcc的安装使用问题请参照本人博客的另一篇文章http://www.cnblogs.com/wsine/p/4664503.html 由于各 ...
- 三,samba
转载:http://www.cnblogs.com/phinecos/archive/2009/06/06/1497717.html 一. samba的安装: sudo apt-get insall ...
- iOS 进阶 第十四天(0416)
0416 注意调用关系,如下图: 就是initWithCoder:.initWithFrame.setup方法三元组
- Linux 系统Telnet服务
Linux 系统Telnet服务 telnet与ssh相比,安全性能并不高,但是在ssh版本升级或者其他的情况下还是需要开启这一项服务.linux提供服务是由运行在后台的守护进程daemon来执行的, ...