CPP知识点复习归纳-指针和引用的区别

指针可能为空,适合需要在不同时间指向不同对象的情况,而引用必须初始化且始终绑定到同一对象。引用更安全,没有空引用问题。当需要实现如数组下标访问或重载运算符[]时,引用提供了一种直接访问对象的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么情况下应该使用指针,什么情况下使用引用?

1)有空指针,但是没有空引用,所以必须对引用赋初值

如果定义一个变量,用它来代表或者指向某个对象,也有可能,这个变量既不代表或指向任何对象,这样的话,用指针更好。

如果一个变量,必须一直代表一个对象,这个时候最好使用引用。

写代码的时候需要注意,指针可能为空,下面两个函数可以看出区别

void test(const int & a){

cout

}

void test(int *ptr){

if(ptr != nullptr)

cout

}

2)指针可以被重新赋值,也就是说一会可以指向这个变量,一会可以指向另外一个变量,让指针指向不同的对象,

引用却总是指向它最初代表的那个对象,更专一,一直代表某一个对象。

string str1("a");

string str2("b");

string &rs = str1;

string *ptr = &str1;

rs = str2; //此时rs扔指向str1,但是str1的值现在变成了“b”

ptr = &str2; //ptr不再指向str1,此时str1的值没有变化,ptr指向了str2.

需要考虑不指向任何对象或者是说不同的时间段代表不同的对象,这个时候使用指针。

非常确定,一直代表某个对象,使用引用。

3)无法用指针来实现的时候

string name = 'hello"

cout

name[0] = 'a';

运算符重载问的问题;

[] 就是运算符,而且是个二元运算符,说明有两个操作数,name是一个操作数,0也是一个操作数

char & String:operator[](int index){

return str[i];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值