C++学习const常引用和const常指针

#include<iostream>
using namespace std;
/*
引用可以被const修饰,这样就无法通过引用修改数据,称为常引用(const必须写在&符号的左边)
*/
int main() {

	int height = 20;
	int age = 10;
	const int &ref = age;//常引用
	const int *p = &age;//常指针

	//ref = 30;//无法通过ref修改age
	//*p=30;//同上
	cout << ref << endl;//可以访问
	cout << *p << endl;
	
	//【引用本身不能修改指向,指针可以】

	//ref1不能修改指向,但是可以通过ref间接修改指向的变量(与不加const道理一样)
	int & const ref1 = age;
	ref1 = 30;
	//ref2不能修改指向,不可以通过ref2间接修改所指向的变量
	int const &ref2 = age;
	//ref2 = 40;


	//p1不能修改指向,可以利用p1间接修改所指向的变量
	int * const p1 = &age;
	//p1 = &height;
	*p1 = 30;
	//p2可以修改指向,不可以利用p2间接修改所指向的变量
	int const *p2 = &age;
	p2 = &height;
	//*p2 = 30;

	getchar();
	return 0;
}
#include<iostream>
using namespace std;
/*
const引用的特点:
可以指向临时数据(常量、表达式、函数返回值等)
*/
int func() {
	return 8;
}
int sum(const int &v1, const int &v2) {
	return v1 + v2;
}
int sum(int &v1, int &v2) {
	return v1 + v2;
}
int main() {

	int age = 10;
	int a = 1;
	int b = 2;
	//1、常量
    const int &ref = 30;//无const不行
	//2、表达式
	const int &ref = a + b;//无const不行
	//3、函数返回值
	const int &ref = func();//无const不行
	//4、不同类型的数据
	const double &ref = age;//无const不行

	//const引用作为函数参数,可以接受const和非const实参
	//非const实参
	int a = 1;
	int b = 2;
	sum(a, b);
	//const实参
	const int c = 1;
	const int d = 2;
	sum(c, d);

	sum(10, 20);

	//可以跟非const引用构成重载

	getchar();
	return 0;
}

//【区分】
//int age = 10;
//const double &rage = age;//不同类型
//age = 30;
//
//cout << age << endl;//10
//cout << rage << endl;//30
//
//
//int age = 10;
//const int &rage = age;//相同类型
//age = 30;
//
//cout << age << endl;//30
//cout << rage << endl;//30
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值