C++ 对c+中的继承感到困惑+;(公共和私人) #包括 #包括 使用名称空间std; 枚举颜色{绿色、蓝色、白色、黑色、棕色}; 类动物{ 公众: 动物():_名称(“未知”){ cout

C++ 对c+中的继承感到困惑+;(公共和私人) #包括 #包括 使用名称空间std; 枚举颜色{绿色、蓝色、白色、黑色、棕色}; 类动物{ 公众: 动物():_名称(“未知”){ cout,c++,inheritance,encapsulation,C++,Inheritance,Encapsulation,您不能从哺乳动物中访问动物的私有属性,这一点是正确的。但是,如果您来自Java,这并不是什么新鲜事,它在Java中也同样有效 请参阅此链接以获取示例:您正确地认识到,您无法从哺乳动物中访问动物的私有属性。但是,如果您来自Java,这并不是什么新鲜事,它在Java中的作用是相同的 请参阅此链接以获取示例:您无法访问类的外部私有变量,此处_name是类的私有范围变量。派生类也无法从基访问私有范围项。若要解决此问题,您可以将_name声明为protected,它将访问派生类。您无法访问外部私有范围变量

您不能从
哺乳动物
中访问
动物
的私有属性,这一点是正确的。但是,如果您来自Java,这并不是什么新鲜事,它在Java中也同样有效


请参阅此链接以获取示例:

您正确地认识到,您无法从
哺乳动物
中访问
动物
的私有属性。但是,如果您来自Java,这并不是什么新鲜事,它在Java中的作用是相同的


请参阅此链接以获取示例:

您无法访问类的外部私有变量,此处_name是类的私有范围变量。派生类也无法从基访问私有范围项。若要解决此问题,您可以将_name声明为protected,它将访问派生类。

您无法访问外部私有范围变量B派生类ASOLO不能从基类访问私有范围项目。为了解决这个问题,可以声明“名称”为受保护的,它将访问派生类。

您的标题与您的正文不匹配。您实际上是指C++中的继承混淆了吗?私有是私有的。如果您想知道的话,您的名字是不匹配的。NT是从派生类中可见的成员变量,将它们放在保护节…或公共。BTW—C++没有包保护,私有成员在其中,但只有基类和它的朋友可以看到和使用它们。子类只能看到公共和受保护的成员。与你的身体不匹配——你是否真的是指C++中的继承混淆了?私有是私有的。如果你想让成员变量从派生类中可见,把它们放在一个<代码>保护< /COD>段…或公共。BTW-C++没有包保护,私有成员在其中,但只有基类和它的朋友可以。查看并使用它们。子类只能查看公共和受保护的成员。可能存在重复的
#include <iostream>
#include <string>
using namespace std ;
enum COLOR { Green, Blue, White, Black, Brown } ;
class Animal {
public :
    Animal() : _name("unknown") {
        cout << "constructing Animal object "<< _name << endl ;
    }
    Animal(string n,COLOR c) : _name(n),_color(c) {
        cout << "constructing Animal object "<< _name << endl ;
    }

    ~Animal() {
        cout << "destructing Animal object "<< _name << endl ;
    }
    void speak() const {
        cout << "Animal speaks "<< endl ;
    }
    void move() const { }
private :
    string _name;
    COLOR _color ;
};
class Mammal:public Animal{
public:
    Mammal(string n,COLOR c):Animal(n,c){
        cout << "constructing Mammal object "<< _name << endl ;
    }
    ~Mammal() {
        cout << "destructing Animal object "<< _name << endl ;
    }
    void eat() const {
        cout << "Mammal eat " << endl ;
    }
};