【发布时间】:2014-07-31 15:26:39
【问题描述】:
有人可以解释一下类的自身变量和继承变量之间的区别吗? 例如在这段代码中:
class First
{
public:
int test;
First::First()
{
test = 5;
}
};
class Second : public First
{
public:
void setTest(int test)
{
Second::test = test;
}
int Second::GetTestFirst()
{
return First::test;
}
int Second::GetTestSecond()
{
return Second::test;
}
};
int main()
{
int input;
Second * sec = new Second;
cin >> input;
sec->setTest(input); //for example 15
std::cout << sec->GetTestFirst();
std::cout << sec->GetTestSecond();
return 0;
}
GetTestFirst() 和 GetTestSecond() 的输出有什么区别?它指向同一个内存块吗?如果是同样的东西,哪个更好用?
【问题讨论】:
-
类中的合格成员定义无效且毫无意义。不要。
-
只有在派生类有同名成员时才需要限定符,因此您可以区分它们。但这应该避免。
-
任一类中只有一个成员变量。
test、First::test和Second::test在Second中都指代同一事物。最好只使用test。 -
你只声明了一个成员变量int test;在您的 First class 中,两个函数调用都引用了相同的内存位置 5。但是,如果您定义另一个变量 int test;在您的第二堂课中,他们将相应地做出不同的参考。另外,你必须知道二等也是一等。所以你可以这样做: Second *sec = new First();现在属于第一类的所有属性都将在第二类中。
标签: c++ pointers inheritance