2017-04-23 125 views
0
#include<iostream> 

class Foo { 
    protected: // Make x visible to derived classes 
     int x; 
    public: 
     Foo() { 
      x = 2; 
     } 
}; 

class Derived : public Foo { 
    public: 
     Derived() { 
      x = 4; 
     } 

     void print(){ 
      std::cout << x << std::endl; 
     } 
}; 


int main() { 
    Derived a; 
    a.print(); 
} 

这打印出来4.我想在print.I中访问两个x的值。我想打印2和4两个文件。我是否需要在Derived类中创建Foo对象并通过object.x访问它?它不止一次地调用了Foo的构造函数。我不希望发生这种情况。如何从派生类中的基类访问变量的值?

+2

为Derived类使用单独的成员变量? –

+5

变量一次只有一个值。 –

+3

*“我想同时打印2和4”* - 'std :: cout << 2 << 4 <<'\ n''?说真的,你是什么意思? –

回答

0

只有一个x在对象总数中。 Foo部件中没有一个,Derived部件中有一个。所以当你的派生构造函数分配4到x那么这就是变量的值,period。 如果你需要保存两个不同的值,那么你需要两个变量。

2

您需要两个变量来保存两个值。