【发布时间】:2017-06-26 17:12:37
【问题描述】:
以下代码:
#include <iostream>
class Test
{
public:
int i;
void get();
};
void Test::get()
{
std::cout << "Enter the value of i: ";
std::cin >> i; // Line 1
}
Test t;
int main()
{
Test t;
t.get();
std::cout << "value of i in local t: "<<t.i<<'\n';
::t.get();
std::cout << "value of i in global t: "<<::t.i<<'\n';
return 0;
}
虽然我知道上面代码中发生了什么,即值被分配给本地和全局 t ,但我对 line 1 感到困惑,因为我无法了解 第 1 行 从用户收到的值是如何分配给 t.i 或 ::t.i 的。
如果有人能帮我解释**上述问题的幕后**,将不胜感激。
【问题讨论】:
-
什么是混乱?
get将数据存储在i中。因此,如果您调用t.get,它会将其存储在t::i中。如果您调用::t.get,它会将其存储在::t::i。 -
在第 1 行,变量 i 被赋予从用户读取的值。这是对象的实例变量。即使是全局对象或局部对象,实例方法内部没有显式定义的变量,如果没有局部声明,则引用实例变量。
-
@RaviChandra:请不要在 cmets 部分回答。谢谢。
-
“无法理解”并不是一个真正的问题。 具体是什么问题?在研究该主题时您没有理解什么?
-
您是否熟悉
this指针及其隐含位置?
标签: c++ class object initialization