不可或缺 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 ...
随机推荐
- ECMAScript5 Object的新属性方法
虽然说现在并不是所有的浏览器都已经支持ECMAScript5的新特性,但相比于ECMAScript4而言ECMAScript5被广大浏览器厂商广泛接受,目前主流的浏览器中只有低版本的IE不支持,其它都 ...
- java.util.Properties
1 Properties文件中分隔符及空格的处理 因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法.但强烈反对使用这两个 ...
- jsp中运用application实现共享留言板功能
jsp中application的知识点总结: 1.一个Web应用程序启动后,将会自动创建一个application对象,在整个应用程序的运行过程中只有这一个application对象,即所有访问该网站 ...
- 知方可补不足~用SqlProfiler来监视数据库死锁
回到目录 关于锁的相关知识,大家可以看我的这篇文章<知方可补不足~Sqlserver中的几把锁和.net中的事务级别> 死锁我想大家都知道,当一个对话(线程)占用一个资源时,别一个线程也同 ...
- EF架构~扩展一个分页处理大数据的方法
回到目录 最近总遇到大数据的问题,一次性处理几千万数据不实际,所以,我们需要对大数据进行分块处理,或者叫分页处理,我在EF架构里曾经写过类似的,那是在进行BulkInsert时,对大数据批量插入时候用 ...
- asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染
在asp.net mvc 使用ajax请求获取数据的时候,我们一般是返回json或者xml,然后解析这些数据进行渲染,这样会比较麻烦,可以请求一个 分部action,返回一个分部视图 直接可以渲染,不 ...
- 新手入门:史上最全Web端即时通讯技术原理详解
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
- Python装饰器详解
python中的装饰器是一个用得非常多的东西,我们可以把一些特定的方法.通用的方法写成一个个装饰器,这就为调用这些方法提供一个非常大的便利,如此提高我们代码的可读性以及简洁性,以及可扩展性. 在学习p ...
- 理解模板引擎Razor 的原理
Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目.Razor Pad是一 ...
- 简单使用AutoMapper实现DTO转换
DTO(Data Transfer Object)数据传输对象,只是传输数据,完成与领域对象之间的转换,并不包含领域业务处理. 当领域模型设计人员只关注核心业务,满足于领域模型的精巧,而不关心具体实现 ...