gpt4 book ai didi

C++ 访问成员和函数

转载 作者:行者123 更新时间:2023-11-27 23:01:45 24 4
gpt4 key购买 nike

我对 Java 和 C# 相当熟悉,想通过 C++ 拓宽我的视野。

但在访问对象的成员或方法时,我无法理解何时使用 ->. 运算符。

我确定我不是第一个问这个问题的人。有很多问题可以解决同样的问题,但我无法将提供的答案与我的特殊情况联系起来。

我有一个非常简单的类,叫做 Stock:

class Stock
{
public:
int32_t value;
string name;

Stock(void);
~Stock(void);

void doStuff();
};

我知道,如果对象是在堆上分配的,当它位于堆栈空间时,我必须使用 ->.

但是如果我想打印 Stock 对象的名称字符串的长度,我需要做这样的事情:

Stock* bmw = new Stock;
bmw->name = "BMw";
cout << bmw->name.length() << endl;

股票名称通过“->”运算符访问,名称长度通过“.”访问。运算符(operator)。在我看来,这两个对象(股票和字符串)都位于堆空间中,所以我只需要 -> 运算符,对吗?

我在这里错过了什么?弦乐怎么样?我认为字符串总是指针......你能解释一下这里的概念吗?

预先感谢您的回复。

马库斯

最佳答案

-> 用于指针 用于实例

在您的示例中,bmw 是指向 Stock 实例的指针,因此您可以使用 -> 运算符引用它的成员。 name 字段是一个字符串instance,因此您使用. 运算符。

你也可以写成

(*bmw).name = "BMw";

由于 *bmw 返回地址存储在变量 bmw 中的实例

就这么简单 - 不要因为引入堆栈和堆而混淆自己。这些只是内存分配实现细节。

关于C++ 访问成员和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26849342/

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