鉴于此基类:
class Employee
{
char* name;
int age;
public:
Employee(char* name);
void print();
};
Run Code Online (Sandbox Code Playgroud)
关于"公众",这有什么区别:
class Manager : public Employee
{
EmployeeList employees;
public:
Manager(char* name, Employee* people);
void print();
};
Run Code Online (Sandbox Code Playgroud)
还有这个:
class Manager : Employee
{
EmployeeList employees;
public:
Manager(char* name, Employee* people);
void print();
};
Run Code Online (Sandbox Code Playgroud)
Gor*_*son 39
默认值是私有继承.举个例子:
class B { };
class D: B { };
Run Code Online (Sandbox Code Playgroud)
使用私有继承作为默认值.这意味着D获取B具有的所有受保护和公共字段和方法(如果我们实际声明了任何),但不能转换为B.因此,此代码失败:
void foo(B* argument) {}
foo(new D); //not allowed
Run Code Online (Sandbox Code Playgroud)
如果D公开继承自B,则可以将D转换为B,并且此函数调用将没有问题.
第二个区别是B中的所有受保护和公共成员都成为D中的私人成员.
这究竟意味着什么?公共继承意味着D IS_A B,但私有继承意味着"以"来实现".从B继承D意味着你想利用B中的一些特性,但不是因为D IS_A B或因为B和D之间存在任何概念上的联系:D
如果没有这个“公共”,“员工”将成为“经理”的私有基类。
使用关键字“class”声明的类默认其成员为私有,其基类默认为私有。
使用关键字“struct”声明的类默认其成员是公共的,并且其基类默认是公共的。