gpt4 book ai didi

c++ - C++中引用和指针返回类型之间的区别是什么

转载 作者:IT老高 更新时间:2023-10-28 22:24:49 30 4
gpt4 key购买 nike

如果我要在 C++ 中创建一个简单的对象,那么返回成员的地址与返回指针有什么区别?据我所知,C++ 没有自动垃圾收集,因此它不会保持引用计数。那么为什么有人会这样做:

class CRectangle {
public:
string& getName( );
int& getWidth( );
int& getHeight( );
private:
string name;
int height;
int width;
};

而不是这样:

class CRectangle {
public:
string* getName( );
int* getWidth( );
int* getHeight( );
private:
string name;
int height;
int width;
};

我知道这些将允许您访问成员数据,但我并不关心这个简单示例中的正确封装。那么有什么区别呢?加速?可读性?风格?

最佳答案

&(在此上下文中)并不表示“地址”。

声明为 string& getName( ); 的函数返回 reference,而不是指针。引用本质上是另一个对象的别名。所以在这种情况下,它不会返回对象名称的拷贝,或指向名称的指针,而是对名称​​本身的引用。因此,对返回对象的任何更改都会直接应用于对象的名称。

你可以通过返回一个指针来达到同样的效果,但是会有两个显着的区别:

  • 指针需要特殊的语法才能访问(*-> 运算符),而引用的使用方式与您使用对象本身的方式完全相同。
  • 指针可以为null,引用不能。因此,任何时候使用指针,您都是在向代码的读者发出信号,“这个值可能是 null

关于c++ - C++中引用和指针返回类型之间的区别是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5541952/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com