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 " ...
随机推荐
- 插值和空间分析(二)_变异函数分析(R语言)
方法1.散点图 hscat(log(zinc)~, meuse, (:)*) 方法2.变异函数云图 library(gstat) cld <- variogram(log(zinc) ~ , m ...
- Mysql找不到mysql.sock怎么办?
1. #ps -aux|grep mysql 找mysql的进程. #kill mysql进程号 确定全部kill光 2.直接跳第3步,无效再使用第2步 /usr/local/mysql/bin/my ...
- 使用 PHP cURL 提交 JSON 数据
http://www.oschina.net/code/snippet_54100_7351 http://www.lornajane.net/posts/2011/posting-json-data ...
- c# 各种排序算法+找第二大的数+句子单词反转
冒泡排序 // 冒泡排序 bubble sort public static int[] BubbleSort(int []array) { bool isContinue = true; ; i & ...
- Chr()和chrb()的含义(转)
http://blog.csdn.net/cunxiyuan108/article/details/5989701 Chr(charcode) 必要的 charcode 参数是一个用来识别某字符的 L ...
- 自动化TOPSQL优化脚本
'自动化优化’只是个噱头,要能自动化世界就安静了.只是行里非得要这么个名字. 最基本的抓取系统topsql,是通过awr,但是这样有诸多弊端和不灵活,比如数量较少.不能直接看执行计 ...
- 结队开发项目—NABC模型
特点:可以避免食堂的用餐高峰,从而使使用者节约时间 need:很多学生中午下课在食堂吃饭会遭遇用餐高峰,使用这款软件,可以提前订饭,按时送达,从而避免食堂的用餐高峰期. approach:学生可以提前 ...
- Eigen库实现简单的旋转、平移操作
本来课程要求用GUI界面来实现Eigen的旋转.平移操作的,但是接触GUI编程时间太短,虽然要求很简单,但是做了几天还是没有完成.就把命令行下面的简单的贴一下吧. main.cpp #include ...
- 百分比布局实现响应式布局在 IE6 中填坑思路
最近接了个政府项目,政府项目要求响应式,并且兼容IE6,不想用媒体监测的方法,于是用了百分比布局的方法,但是IE6真是名不虚传,做第一个界面就遇到了个bug ①两张宽度各占50%的图片无法在同一横排, ...
- 通过Log4j的DEBUG级别来显示mybatis的sql语句
为了更加方便调试sql语句,需要显示mybatis的sql语句. 网络上的一般方式都是通过log4j来实现,但是很多都有问题. 经过实验,以下代码能够保持正常:(只显示myb ...