我有这段代码(来自考试的问题),代码中有很多错误,这是代码:

 class A
 {
   int z;
   static int y;
   public:
     A() {(*this).incrementY();}
    int x () { y=y+2; return z;}
    static int getY(){ return z;}
    void incrementY() {y++}
 };
 class B: A
 {
   public:
    B (): A() {(*this).incrementY();};
 };
 class C : public B
 {
   public:
    C(): B() {(*this).incrementY;() }
 };

 int main()
 {
   A::x();
   A a;
   a.getY();
   A::getY();
   B b;
   C c;
   C::getY();
   b.x();
 }


有一个私有继承。这意味着B中的所有方法和变量对于从B继承的任何类都是私有的?

最佳答案

您是正确的(尽管实际上这意味着所有A的方法都无法访问)。

但是,还有其他一些问题:

A::x() // will not work as x is not static.
a.getY() // will not work as getY() is static.
C::getY() // Cannot access getY()

关于c++ - 代码中的C++错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/630946/

10-11 00:54