文章目录

  • reference
  • reference的常见用途

reference

变量有三种形式:值,指针,引用

int x=0; //值
int* p=&x;//指向整型的指针,地址,指针在之后的程序中可以指向其他变量
int& r=x;//引用,此处表示 r代表x,在之后的程序中r只能一直代表x,不能再代表其他变量,此时r x都是0int x2=5;
r=x2;//此时r x都是5
int& r2=r;//此时r2是5,r2代表r,r代表x,相当于r2代表x

如果r是x的引用,则sizeof(r)==sizeof(x),&r==&x

reference的常见用途

测试类包含两个fun函数,其中一个有const一个没有const

#ifndef _TEST_H
#define _TEST_H#include<iostream>
using namespace std;
class Test {public:Test(int tval = 0):t(tval) {}void fun()const {cout << "有const的function" << endl;cout << t << endl;}void fun(){cout << "没有const的function" << endl;cout << t << endl;}
private:int t;
};
#endif

调用:

int main()
{Test myTest(5);myTest.fun();const Test myTest2(10);myTest2.fun();system("pause");return 0;
}

输出结果为:

没有const的function
5
有const的function
10

上述验证表明,const是函数签名的一部分,常量类只能调用常量成员函数,即带有const的,非常量类优先调用不带有const的函数,若只有带有const的常量成员函数,则非常量类就调用常量成员函数,即上述示例,我们如果将下述代码进行注释,

void fun(){cout << "没有const的function" << endl;cout << t << endl;}

则输出的结果为:

有const的function
5
有const的function
10

c++面向对象高级编程 学习十四 引用相关推荐

  1. c++面向对象高级编程 学习十六 vptr和vtbl

    当一个类中有一个或多个虚函数时,内存中会多一个虚指针(vptr,virtual pointer),指向一个虚表(vtbl,virtual table) 父类有虚函数,则子类一定有虚函数 在下图示意图中 ...

  2. c++面向对象高级编程 学习十五 组合继承关系下的构造和析构

    文章目录 继承关系 组合关系 继承和组合 继承关系 构造由内而外,析构由外而内,内即是父类 组合关系 A拥有B, 构造由内而外,析构由外而内,内即是B 继承和组合 构造和析构顺序如图:

  3. c++面向对象高级编程 学习十二 模板

    模板特化: 模板是一种泛化的形式,特化是将参数类型进行指定,写出特化的版本,当在调用下图cout<<hash()(1000);的时候,由于特化中有struct hash{ }的版本,因此会 ...

  4. c++面向对象高级编程 学习十 function-like classes

    本节是设计一个class,使它的行为像一个函数. 如果一个东西能接受小括号()操作符,那么这个东西就称之为函数,或像函数的东西. 下图为三个函数对()的重载,这三个类均为像函数的类,它们可接受()操作 ...

  5. c++面向对象高级编程 学习四 静态、类模板、函数模板

    静态static:静态数据和静态函数,在内存中只有一份,不会随着创建对象的数目的增加而增加 static数据:比如银行的account类中,账户名是普通数据,100个对象会有100个账户名,但利率都是 ...

  6. c++面向对象高级编程 学习十三 数量不定的模板参数,auto,for

    文章目录 数量不定的模板参数 auto ranged-base for 数量不定的模板参数 void print() {} //... 表示参数的数量不定 template<typename T ...

  7. c++面向对象高级编程 学习一 不带指针的类

    复数类 complex 是一个不带指针的类,其声明如下: class complex {public: complex(double r=0,double i=0):re(r),im(i){} com ...

  8. C#高级编程五十四天----Lookup类和有序字典

    Lookup类 Dictionary<Tkey,TValue>仅仅为每一个键支持一个值.新类Lookup<Tkey,TValue>是.NET3.5中新增的,它类似与Dictio ...

  9. c++面向对象高级编程 学习十七 const, new, delete

    文章目录 常量成员函数 new和delete 常量成员函数 常量成员函数是不改变成员数据. 当成员函数的const和non-const版本同时存在时,const object只能调用const版本,n ...

最新文章

  1. android 可折叠标题栏,ViewPager + Fragment + 折叠式标题栏异常
  2. 一台计算机有64,在同一台计算机上使用带有32位和64位Altium设计软件的数据库元件库...
  3. python连接服务器失败_python-查询期间失去与MySQL服务器的连接
  4. python多版本共存 ubuntu_Linux下python3与python3的多版本共存
  5. 中文路径_中文分词的原理、方法与工具
  6. 【ArcGIS微课1000例】0013:ArcGIS创建色带图例(以GlobeLand30土地覆盖数据为例)
  7. What are definitions of ​Model, Inference and Algorithm and its associations ?
  8. iphone远程连接mysql_如何远程连接数据库 原来是这样的
  9. 【LINQ】Linq to SQL -- Select语句
  10. 190514每日一句
  11. 数字图像学笔记——8. 几种常见的空间滤波器(均值滤波器、中值滤波器)
  12. 常用英语命令(音标,释义)
  13. 电主轴编码器测试工具VS sensorikHCU500/DCMU-BOX,海德汉PWM21/PWT101,LENORD+BAUER(L+B)211BSO/211CS04E2M使用对比
  14. 金蝶外贸进出口行业解决方案(K/3 Cloud、EAS版)
  15. syntax error, expect [, actual {, pos 0, fieldName null解决方法
  16. ggplot2--geom_smooth和曲线拟合画图
  17. JAVA 实现《贪吃蛇大作战》游戏|CSDN创作打卡
  18. 半波整流变压器电流波形仿真
  19. Java开源生鲜电商平台-订单抽成模块的设计与架构(源码可下载)
  20. 解题-->在线OJ(八)

热门文章

  1. 【转】图形流水线中坐标变换详解:模型矩阵、视角矩阵、投影矩阵
  2. ASP.Net请求处理机制初步探索之旅 - Part 3 管道
  3. C#进阶之WebAPI(二)
  4. Power BI与Power Query、Power Pivot 是什么关系?
  5. 一步步编写操作系统 19 改进MBR,直接操作显卡
  6. c语言删除文件remove_Python中的文件和目录操作
  7. iphone电压测试软件,‎App Store 上的“ECG Test Pro”
  8. CCNA-第十三篇-NAT-上
  9. LeetCode 598. 范围求和 II
  10. 【牛客 - 331G】炫酷数字(反素数打表 或 扩展埃式筛法,结论)