我的c++学习(7)引用和复制构造函数
一、引用
什么是引用? 引用又称别名(alias),是一种非常特殊的数据类型。它不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名,也就是
C++系统不为引用类型变量分配内存空间。引用主要用于函数之间的数据传递。
引用定义的格式为: 类型 &引用变量名=已定义过的变量名;
例如: double number ;
double &newnum=number ;
newnum是新定义的引用类型变量,它是变量number的别名,两个变量代表同一块内存。
【例】使用一个函数交换两个数据。
#include<iostream.h>
void swap(double & d1,double & d2) //d1和d2是引用型变量
{
double temp ;
temp=d1 ;
d1=d2 ;
d2=temp ;
} void main(void)
{
double x , y ;
cout<<"请输入x和y的值"<<'\n';
cin>>x>>y ;
swap(x,y) ;
cout<<"x="<<x<<'\t'<<"y="<<y<<'\n';
}
引用可以作为函数的返回值
一般函数返回值时,要生成一个临时变量作为返回值的拷贝,而用引用作为返回值时,不生成值的拷贝。
【例】采用不同返回方式的求正方形面积函数的比较。
#include<iostream>
using namespace std;
double temp;
double fsqr1(double a){
temp=a*a ; return temp;
}
double & fsqr2(double a){
temp=a*a ; return temp;
}
int main(){
double x=fsqr1(5.5);//第一种情况
double y=fsqr2(5.5);//第二种情况
cout<<"x="<<x<<'\t'<<"y="<<y<<endl;
return ;
}
几点注意:
1.对数组只能引用数组元素,不能引用数组(数组名本身为地址)。
2.不能定义引用的引用(引用也是地址),所以当函数的参数为引用时,引用不能作实参。
二、复制构造函数
……
我的c++学习(7)引用和复制构造函数的更多相关文章
- [第二章]c++学习笔记6(复制构造函数在各个编译器中的表现)
visual studio结果 dev c++结果 两者的输出有所不同 原因:dev c++编译对这个过程进行了优化,因为直接return对象给a,为节省时间所以不生成临时对象,所以结果为10. 注: ...
- [第二章]c++学习笔记4(复制构造函数)
性质 (1)只有一个参数,即被同类对象的引用. 注 起作用的三种情况 注 常量引用参数
- C++ 类 复制构造函数 The Copy Constructor
一.复制构造函数的定义 复制构造函数是一种特殊的构造函数,具有一般构造函数的所有特性.复制构造函数创建一个新的对象,作为另一个对象的拷贝.复制构造函数只含有一个形参,而且其形参为本类对象的引用.复制构 ...
- C++学习基础六——复制构造函数和赋值操作符
1.什么是复制构造函数 复制构造函数:是构造函数,其只有一个参数,参数类型是所属类的类型,且参数是一个const引用. 作用:将本类的成员变量赋值为引用形参的成员变量. 2.什么是赋值操作符 赋值操作 ...
- (转) 学习C++ -> 引用( References )
学习C++ -> 引用( References ) 一.引用的介绍 引用就是某一变量(目标)的一个别名, 相当于同一个人有了两个名字, 无论喊哪一个名字实际上都是指的同一个人. 同样, 在 ...
- C++学习之引用
C++学习之引用 临时变量.引用参数和const 现在,当参数为const引用的时候,如果实参与引用参数不匹配,C++将生成临时变量.C++将在下面两种情况下生成临时变 ...
- JavaScript语法细节——引用与复制
原文:JavaScript语法细节--引用与复制 我们都知道,JS中变量的赋值有两种方式,最近在折腾自己写的标签栏插件,碰到了很多平时没注意的问题.正好,那边处理清楚了,稍微整理一下关于引用与复制相关 ...
- OGG学习笔记02-单向复制配置实例
OGG学习笔记02-单向复制配置实例 实验环境: 源端:192.168.1.30,Oracle 10.2.0.5 单实例 目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1. ...
- OGG学习笔记03-单向复制简单故障处理
OGG学习笔记03-单向复制简单故障处理 环境:参考:OGG学习笔记02-单向复制配置实例 实验目的:了解OGG简单故障的基本处理思路. 1. 故障现象 故障现象:启动OGG源端的extract进程, ...
随机推荐
- LightOJ 1236 - Pairs Forming LCM(素因子分解)
B - Pairs Forming LCM Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
- 线段树(main函数自由)
都是一些裸线段树的模板,无主函数! #include<cstdio> #include<algorithm> #include<cstring> #include& ...
- 二、JavaScript语言--JS基础--JavaScript进阶篇--选项卡切换效果
利用JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安家东三环 北京首现零首付楼 ...
- C#实现http协议下的多线程文件传输
用C#实现HTTP协议下的多线程文件传输转自 http://developer.51cto.com/art/201105/263066_all.htm C#(C Sharp)是微软(Microsof ...
- 加载gif动画的三种方式
GifView.h/** * 调用结束就开始播放动画,如果需要用户指定何时播放的话,只需要把timer的开始放到合适的位置.通过对CFDictonaryRaf 也就是gifProperties的改变, ...
- set -x 跟踪脚本执行信息
注意set -x其中"-"与"x"之间没有空格 [root@GitLab sh]# ./sx.sh heelo + a=heelo + echo heelo h ...
- Memcached驱动(C#)
using Memcached.ClientLibrary; using System; using System.Collections.Generic; using System.IO; usin ...
- Genymotion刷入谷歌应用市场以及获取root权限
Genymotion刷入谷歌应用市场以及获取root权限 - 推酷http://www.tuicool.com/articles/rEV3aa6 刷入gapp, arm框架,supersu的包要注意, ...
- 从 Eclipse 迁移至 Android Studio
从 Eclipse 迁移至 Android Studio 本文内容 Android Studio 基础知识 迁移先决条件 将项目导入 Android Studio 后续步骤 将项目迁移至 Androi ...
- Python 写Windows Service服务程序
1.需求 为什么要开发一个windows服务呢?之前做一个程序,必须要读取指定目录文件License, 因为其他程序也在读取这指定目录的License文件,且License不同时会修改License的 ...