int age = 30; // 定义int型变量
int *page = &age; // 定义int *指针page, 指向age
// 修改指针解引用来修改变量
*page = 50;
std::cout << *page << "," << age << std::endl;
int age = 30;
int &ref_age = age; // ref_age是age的引用,改变ref_age等同于改变age
void increment(int &num) {
num++;
}
int z = 5;
increment(z); // z的值现在变为6
用法③:作为参数传递,在函数的参数列表中,使用&可以声明引用参数,这个函数体内形参发生变化实参也会随之改变
#include <iostream>
class MyClass {
public:
// 成员变量m_ref是int的引用
int &m_ref;
// 构造函数接受一个int类型的引用参数,并用它初始化m_ref
MyClass(int &ref) : m_ref(ref) {
// 初始化列表中使用&来绑定传入的引用到成员m_ref
}
// 方法用于修改m_ref所引用的值
void modifyReferencedValue(int newValue) {
m_ref = newValue;
}
};
int main() {
int externalValue = 10;
MyClass obj(externalValue); // 将externalValue的引用传递给MyClass的构造函数
std::cout << "Before modification: " << externalValue << std::endl;
obj.modifyReferencedValue(20); // 通过对象修改引用的值
std::cout << "After modification: " << externalValue << std::endl; // 输出20,因为obj.m_ref和externalValue是同一个值的不同引用
return 0;
}
用法④:在C++11及以后的版本中,可以在类的构造函数初始化列表中使用引用,以此来初始化类的引用类型成员变量。这样做可以让类的成员直接引用外部对象,从而实现共享状态或提供一种直接操作外部资源的方式。不过,需要注意的是,当成员变量是引用类型时,构造函数在创建对象时必须明确地初始化这个引用成员,且不能默认初始化
int &getRefToX() {
static int x = 0;
return x;
}
int main() {
int &refX = getRefToX();
refX = 10;
std::cout << getRefToX(); // 输出10,因为refX修改了静态变量x的值
return 0;
}
用法⑤:作为返回类型,函数也可以返回引用,允许函数直接修改外部变量或返回对象的引用以便连续修改
int a = 5; // 二进制表示为0101
int b = 3; // 二进制表示为0011
int c = a & b; // c的结果为1 (二进制0001)
用法⑥:位与运算符,在表达式中,当&
两边都是整数时,它作为位与运算符,对两个操作数的每一位执行逻辑与操作
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- esig.cn 版权所有 湘ICP备2023023988号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务