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是从派生类中可见的成员变量,将它们放在
#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 ;
}
};