C++ 中的私有继承是一种继承方式,它可以让派生类的对象获得基类的成员,但是这些成员只能在派生类内部访问,从而实现了封装。私有继承的作用有以下几点:
- 实现代码复用
私有继承可以实现代码的复用。比如有一个基类 Person,其中定义了一些通用的成员变量和函数,而派生类 Teacher 和 Student 都需要使用这些成员。此时可以通过私有继承来避免代码重复。代码如下:
class Person {
public:
void say_hello() {
std::cout << "Hello, I am a person!" << std::endl;
}
};
class Teacher : private Person {
public:
void teach() {
std::cout << "I am a teacher." << std::endl;
}
};
class Student : private Person {
public:
void study() {
std::cout << "I am a student." << std::endl;
}
};
在上面的代码中,Teacher 和 Student 类都通过 private 继承了 Person 类,这样它们就可以直接调用 Person 类中的 say_hello() 函数,而不需要重复定义该函数。
- 实现类的隐藏
私有继承可以实现类的隐藏,即将基类成员设置为私有,只能在派生类内部使用,从而实现了封装。这种方式可以在派生类实现了基类接口的同时,避免了外部的干扰和直接访问。如下代码例子:
class Person {
private:
int age;
std::string name;
public:
Person(int age, const std::string& name) : age(age), name(name) {}
void say_hello() {
std::cout << "Hello, I am " << name << ", " << age << " years old." << std::endl;
}
};
class Teacher : private Person {
public:
Teacher(int age, const std::string& name, const std::string& course) : Person(age, name), course(course) {}
void teach() {
say_hello();
std::cout << "I am teaching " << course << "." << std::endl;
}
private:
std::string course;
};
在上面的代码中,Person 类的成员变量 age 和 name 都是私有变量,而 Teacher 类通过私有继承 Person 类来继承 Person 类的 say_hello() 函数,但是外部无法直接访问 Teacher 类对象的 age 和 name 成员变量。
以上是私有继承的主要作用,也是常见的应用。在实际开发中我们可以根据需要选择不同的继承方式,来达到不同的编程目的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 中私有继承的作用 - Python技术站