C++ 继承的成员如何在C++;使用children成员变量?
例如,我有基类A:C++ 继承的成员如何在C++;使用children成员变量?,c++,inheritance,C++,Inheritance,例如,我有基类A: class A { public: callA() { val = 100; std::cout << this->val << std::endl; } int val; } class B : public A { public: B() { val = 10; } int val; } B b; b.callA(); A类{ 公众:
class A {
public:
callA() {
val = 100;
std::cout << this->val << std::endl;
}
int val;
}
class B : public A {
public:
B() {
val = 10;
}
int val;
}
B b;
b.callA();
A类{
公众:
马蹄莲(){
val=100;
std::cout val在内部,类B的任何实例都包含类A的整个副本。事实上,当您初始化类B的新实例时,首先运行类A的构造函数。因此,当您从基类调用非虚函数时,它将像从派生类内部的基类运行一样运行。它可以ven访问基类的私有变量(派生类无法访问,它只能访问基类中的公共/受保护变量)
:
#包括
使用名称空间std;
甲级
{
公众:
()
{
在内部,类B的任何实例都包含类A的整个副本。事实上,当您初始化类B的新实例时,类A的构造函数首先运行。因此,当您从基类调用非虚函数时,它将像从基类运行一样运行,基类是派生类的内部。它甚至可以访问s基类的私有变量(派生类无法访问,它只能访问基类中的公共/受保护变量)
:
#包括
使用名称空间std;
甲级
{
公众:
()
{
你能试着运行它吗?我投票把这个问题作为离题题来结束,因为当运行起来很简单,看到它打印100个时,问输出是什么是没有意义的。这是意外的吗?你有两个不同的成员变量。它们具有相同名称的事实并不重要。如果B 例如,使用另一个
。你为什么对cout
使用这个->val
,而对作业使用val=
呢?你应该更加一致,去掉这个->val
。你试过运行它了吗?我投票结束这个问题,因为没有必要问当它运行时输出是什么运行起来很简单,可以看到它打印100。这是意外的吗?您有两个不同的成员变量。它们具有相同的名称这一事实并不重要。例如,如果使用B
另一个
,您将得到完全相同的结果。为什么对cout
执行this->val
,而对assignm执行val=/code>ent?您应该更加一致,删除this->val
。
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "Base constructor!" << endl;
privateVar = 10;
}
void testPrint()
{
cout << "privateVar: " << privateVar << endl;
}
private:
int privateVar;
};
class B : public A
{
public:
B()
{
cout << "Derived Constructor!" << endl;
}
};
int main()
{
B testB;
testB.testPrint();
return 0;
}