[源碼下載]
作者: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 = 10;
// &b - 代表定義一個名為 b 的引用。此處的“&”是類型說明符,表示 b 是一個引用
// 聲明了一個引用,則必須同時為其初始化
int &b = a1; // b 是 a1 的引用,即 b 是 a1 的別名
b = a2; // a1 和 b 都等於 10
a1 = 100; // a1 和 b 都等於 100
b = 1000; // a1 和 b 都等於 1000
}
// 引用和指針的區別
void reference_demo2()
{
int m = 1;
int n = 2;
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 = 0;
void reference_demo3()
{
reference_function() = 999;
// 此時 reference_i 的值為 999
}
int &reference_function()
{
return reference_i;
}
OK
[源碼下載]