不可或缺 Windows Native (12) - C++: 引用类型
作者:webabcd
介绍
不可或缺 Windows Native 之 C++
- 引用类型
示例
CppReference.h
#pragma once #include <string> using namespace std; namespace NativeDll
{
class CppReference
{
public:
string Demo();
};
}
CppReference.cpp
/*
* 引用类型
*
* 引用也可以称之为“别名”
*
* 注:
* 1、声明引用时,必须同时初始化
* 2、被引用的对象必须已经分配了空间
* 3、被引用的对象不能为地址,即指针变量、数组变量等不能被引用
*/ #include "pch.h"
#include "CppReference.h" using namespace NativeDll; void reference_demo1();
void reference_demo2();
void reference_demo3(); string CppReference::Demo()
{
// 引用的用法
reference_demo1(); // 引用和指针的区别
reference_demo2(); // “引用”也可以作为函数的返回值
reference_demo3(); return "看代码及注释吧";
} // 引用的用法
void reference_demo1()
{
int a1, a2 = ;
// &b - 代表定义一个名为 b 的引用。此处的“&”是类型说明符,表示 b 是一个引用
// 声明了一个引用,则必须同时为其初始化
int &b = a1; // b 是 a1 的引用,即 b 是 a1 的别名 b = a2; // a1 和 b 都等于 10
a1 = ; // a1 和 b 都等于 100
b = ; // a1 和 b 都等于 1000
} // 引用和指针的区别
void reference_demo2()
{
int m = ;
int n = ; int *x = &m;
int *y = &n; int &s = m;
int &t = n; void my_swap(int *i, int *j); // 通过指针,交换两个整型
void my_swap(int &i, int &j); // 通过引用,交换两个整型 my_swap(x, y); // 调用 void my_swap(int *i, int *j); 结果:m=2,n=1
my_swap(s, t); // 调用 void my_swap(int &i, int &j); 结果:m=1,n=2
my_swap(m, n); // 调用 void my_swap(int &i, int &j); 结果:m=2,n=1
} // 通过指针,交换两个整型
void my_swap(int *i, int *j)
{
// 形参是实参的副本,这里会将指针复制一份出来,函数调用结束后立即释放 int temp;
temp = *i;
*i = *j;
*j = temp;
} // 通过引用,交换两个整型
void my_swap(int &i, int &j)
{
// 如果采用“引用”的方式,i 和 j 其实就是对应的那两个实参本身 int temp;
temp = i;
i = j;
j = temp;
} // “引用”也可以作为函数的返回值
int &reference_function();
int reference_i = ;
void reference_demo3()
{
reference_function() = ; // 此时 reference_i 的值为 999
} int &reference_function()
{
return reference_i;
}
OK
[源码下载]
不可或缺 Windows Native (12) - C++: 引用类型的更多相关文章
- 不可或缺 Windows Native 系列文章索引
[源码下载] 不可或缺 Windows Native 系列文章索引 作者:webabcd 1.不可或缺 Windows Native (1) - C 语言: hello c 介绍不可或缺 Window ...
- 不可或缺 Windows Native (1) - C 语言: hello c
[源码下载] 不可或缺 Windows Native (1) - C 语言: hello c 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 在 Windows Sto ...
- 不可或缺 Windows Native (5) - C 语言: 数组
[源码下载] 不可或缺 Windows Native (5) - C 语言: 数组 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 数组 示例cArray.h #ifn ...
- 不可或缺 Windows Native (6) - C 语言: 函数
[源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
- 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域
[源码下载] 不可或缺 Windows Native (9) - C 语言: 动态分配内存,链表,位域 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 动态分配内存 链 ...
- 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native
[源码下载] 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native 作者:web ...
- 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换
[源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...
- 不可或缺 Windows Native (23) - C++: 虚函数
[源码下载] 不可或缺 Windows Native (23) - C++: 虚函数 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 虚函数 示例1.基类CppHuman ...
随机推荐
- [翻译]AKKA笔记 - LOGGING与测试ACTORS -2 (一)
在前两章 ( 一 , 二 ) ,我们大致讲了Actor和message是怎么工作的,让我们看一下日志和测试我们的 TeacherActor . RECAP 这是上一节我们的Actor代码: class ...
- Atitit paip.对象方法的实现原理与本质.txt
Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...
- 据说,每一个 iOSer 都想要一张 Swift 大会门票
据说,每一个 iOSer 都想要一张中国首届 Swift 开发者大会的门票: 那么,福利来了-- fir.im 作为中国首届 Swift 大会的唯一钻石赞助商,有最后 2 张价值 600 多的门票(已 ...
- pycharm快捷键 - 官方全
pycharm快捷键 - 官方全 Ctrl + F12 显示文件内的成员,继承的成员
- 自动登录VSS
每次打开vss都需要输入用户名.密码,用起来多少有些麻烦.用以下两种方式即可实现自动登录: 方法1: 在vss快捷方式的命令行最后面添加-y参数 "C:/Program Files/Micr ...
- Java时间日期格式转换
1.这个是系统自动默认的时间格式,或者说是美式格式: Long time = System.currentTimeMillis(); Date date = new Da ...
- 深入入门系列--Data Structure--04树
终于有机会重新回头学习一下一直困扰自身多年的数据结构了,赶脚棒棒哒.一直以来,对数据结构的掌握基本局限于线性表,稍微对树有一丢丢了解,而对于图那基本上就是不懂(不可否认,很多的考试中回避了图也是原因之 ...
- 使用jasperreports-5.6.0.jar导致的问题
使用jasperreports-5.6.0.jar导致的问题 Struts2+jasperReport5.6如下设置: <!-- 社员档案 --> <package name=&qu ...
- ng-表单验证
表单验证<AngularJs> 常用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type ...
- Bmob基础
BaaS是指专为移动应用开发者提供整合云后端的服务.开发者无需过多研究服务器端程序,而只需调用云计算平台提供的API,使用相应SDK,就能迅速完成数据存储.账户管理.消息推送.社交网络整合等功能.本文 ...