私はいくつかの基本的な相続問題を解決していました。私は論理を理解していないいくつかのことを見つけました。 Baseクラスの派生クラスをプライベートクラスとして継承すると、Baseクラスのパブリックメンバーにアクセスすることはできますか?ここに私のコードは、パブリック、プライベート、プロテクトとの相違
#include <iostream>
struct Shape
{
virtual void print()
{
std::cout << "SHAPE" << std::endl;
}
virtual ~Shape() {}
};
struct Box : private Shape
{
virtual void print()
{
std::cout << "BOX" << std::endl;
}
};
int main(int argc, char** argv)
{
Shape* s = new Box; //illformed ? can't access the public members of the base.
s->print();
delete s;
return 0;
}
先生に相談して、書籍を読んでください –
あなたのC++コンパイラは壊れています。 gcc 7.1.1は正しく診断を発行し、コードをコンパイルできません: 'エラー: 'Shape'は 'Box'のアクセス不可能なベースです –
つまり、私がPrivateとして継承すると、形状はボックスにアクセスできません。はい?クラスの私的なメンバーにアクセスできない場合と同様です。 – Bob11