如何在C++类中继承变量

tom*_*ing 8 c++ inheritance

使用C++类,您可以让派生类从其父类继承变量.如何定义派生类,以便var2不继承derivclass

class mainclass{
public:
    int var1;
    char var2;
    void test(){
        cout<<var1<<var2<<endl;
    }
}
class derivclass : mainclass{
public:
    void test(){
        cout<<var1<<var2<<endl;
        //want a compiler error here that var2 is not defined
    }
}
Run Code Online (Sandbox Code Playgroud)

Edw*_*ard 7

阻止成员在C++中继承的规范方法是声明它private.尝试访问它的派生类将引发编译器错误.它看起来像这样:

class mainclass{
public:
    int var1;
    void test(){
        cout<<var1<<var2<<endl;
    }
private:
    char var2;
}
class derivclass : mainclass {
    public:
    void test(){
        cout<<var1<<var2<<endl;
        //compiler error here; var2 is not accessible
    }
}
Run Code Online (Sandbox Code Playgroud)

这是实现您所要求的最直接的方式.

  • 我想你的例子中有`var1`和`var2`.在您的示例中,`var1`将无法访问. (2认同)

sta*_*ust 5

你可以做到private。但你可能不应该。

它不应该从 Base 继承某些东西的事实意味着它可能根本不应该直接从 Base 继承。

而是创建另一个基类并使这两个类从该基类继承。

class Baseclass{
public:
    void test(){
        cout<<var1<<endl;
    }
protected:
    int var1;

}

class mainclass : public Baseclass{
public:
    char var2;
    void test(){
        cout<<var1<<var2<<endl;
    }
}

class derivclass : Baseclass{
public:
    void test(){
        cout<<var1<<endl;
    }
}
Run Code Online (Sandbox Code Playgroud)