gpt4 book ai didi

c++ - 在 C++ 中声明指向对象的指针实际上意味着什么?

转载 作者:行者123 更新时间:2023-11-27 22:35:16 25 4
gpt4 key购买 nike

这是一个教育问题:

如果我创建了一个类

class bank_account

在主函数中,我声明

bank_account *pointer = new bank_account();

然后我初始化变量如下

(*pointer).account_name ="Random Name";

我的困惑是这里发生的事情,因为我通常声明一个带有名称的对象,而不是指针,如果该对象是一个指针,而指针只是一些保存变量地址的变量。如果将指针声明为对象以及它实际代表什么,这意味着什么?指向对象的指针是指一个不可见的对象吗?

最佳答案

and a pointer is just some variable which holds an address to a variable

更正:指针可以指向任何对象;不一定是变量。变量有名称。可能存在未直接由变量命名的对象,例如子对象、临时对象和动态存储中的对象。

例如,在您的程序中,表达式 new bank_account() 在动态存储中创建一个对象。

What does it mean if a pointer is declared as an object

“声明为对象” 是什么意思真的不清楚。如果您将指针声明为 bank_account* 类型,则意味着它可以指向类型为 bank_account 的对象,该对象恰好是一个类。

如果声明一个变量具有指针类型,那么该变量命名的对象就是一个指针。

and what it is actually representing?

指针代表对象的地址。除了包含一个对象的地址外,它还可以具有空指针值(指向任何对象)或者它可以具有无效值(一个地址可能包含一个对象,但该对象不再存在)。

Then I am initializing variables such as follows

(*pointer).account_name ="Random Name";

迂腐地说,这在技术上不会初始化变量。初始化是在创建对象时对对象执行的。此成员变量已较早创建,此表达式分配 一个值给它。但是,如果变量之前未被初始化,那么通俗地说,谈论初始化并不会大错特错。

when I declare an object as pointer what is the pointer pointing to?

在您的示例程序中,pointer 指向一个在动态存储中使用关键字 new 创建的对象。

通常,指针指向某个对象,其地址存储在指针中,或者指针可能根本不指向对象(无效或空值)。


You said an object is created

是的。 new 表达式在动态存储中创建一个对象。

but I declared a pointer

是的。你做到了。

so the pointer is pointing to the object?

您已经使用 new 表达式的结果初始化了指针的值。指针指向在动态存储中创建的对象。

and what is the name of that object then?

对象没有名字。但是:变量确实有名称,并且变量与对象相关联,因此可以通俗地说与变量相关联的那些对象有名称。但是动态存储中的对象不是由变量命名的。

关于c++ - 在 C++ 中声明指向对象的指针实际上意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55291991/

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