use*_*214 0 c++ inheritance pointers
有人可以解释一下我自己的类变量和继承变量之间的区别吗?例如,在此代码中:
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;
}
Run Code Online (Sandbox Code Playgroud)
GetTestFirst()和GetTestSecond()的输出有什么区别?它指向相同的内存块吗?如果是同一件事,哪一个更好用?
没有区别 - 一个Second对象只有一个test成员,继承自First.所以说
return First::test;
Run Code Online (Sandbox Code Playgroud)
是多余的 - 你可以使用
return test
Run Code Online (Sandbox Code Playgroud)
(没有this其他答案状态 - 这也不是必要的).你不应该使用
Second::GetTestFirst()
Run Code Online (Sandbox Code Playgroud)
和类似的.编译器完全知道它正在编译Second.
GetTestFirst()
Run Code Online (Sandbox Code Playgroud)
足够.据我所知,所有First::和Second::你的代码都没有必要.最后一个观察:在C++中你不应该使用动态内存,除非你需要.代替
Second * sec = new Second;
Run Code Online (Sandbox Code Playgroud)
你应该使用
Second sec;
Run Code Online (Sandbox Code Playgroud)
而.不是->以后.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |