【发布时间】:2019-03-22 02:23:36
【问题描述】:
这是一个教育问题:
如果我创建了一个类
class bank_account
在主函数中,我声明了
bank_account *pointer = new bank_account();
然后我初始化变量如下
(*pointer).account_name ="Random Name";
我的困惑是这里发生的事情,因为我通常用 NAME 声明一个对象,而不是指针,如果该对象是一个指针,并且指针只是一些变量,它保存一个变量的地址。如果将指针声明为对象以及它实际表示的内容,这意味着什么?指向对象的指针是指不可见的对象吗?
【问题讨论】:
-
“隐形”是什么意思?您无法“看到”它们仅存在于计算机内存中的对象。
-
好吧,我声明了一个有名字的对象,对吧?那么当我将一个对象声明为指针时,指针指向的是什么?
-
一个对象只是一个初始化的内存块。当您说
new bank_account();时,系统分配并初始化了一块内存(一个对象),然后您将其地址分配给您的指针(它本身就是一个单独的对象)。这就是让你困惑的地方吗? -
除非你把它指向安全的东西,否则你可以安全地使用它。
bank_account *pointer;如果您尝试使用它,它就是炸弹。但是如果你pointer = new bank_account();,那么pointer指向一个内存块,其形状为bank_account,它已经构建并准备就绪。bank_account没有名字,只有一个地址。我敢肯定,这会极大地打扰六号。 -
我建议阅读有关堆栈和堆的内容,这应该可以让您更好地了解它们的区别。