Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 继承的成员如何在C++;使用children成员变量?_C++_Inheritance - Fatal编程技术网

C++ 继承的成员如何在C++;使用children成员变量?

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类{ 公众:

例如,我有基类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;
}