在C++中,封装性是指将数据(属性)和操作数据的方法(函数)包装在一起,从而隐藏了类的内部实现细节。为了实现类的扩展,我们可以使用以下方法:
class Base {
public:
virtual void foo() {
// 基类实现
}
};
class Derived : public Base {
public:
void foo() override {
// 派生类实现
}
};
= 0
表示。派生类必须实现这个纯虚函数,否则它们也将成为抽象类。这种方式可以用来强制使用基类的接口,同时允许通过派生类扩展功能。class Abstract {
public:
virtual void bar() = 0; // 纯虚函数
};
class Concrete : public Abstract {
public:
void bar() override {
// 具体实现
}
};
class Engine {
public:
void start() {
// 发动机启动实现
}
};
class Car {
private:
Engine engine;
public:
void start() {
engine.start(); // 调用发动机启动实现
}
};
template <typename T>
class Container {
private:
T data;
public:
void set(T value) {
data = value;
}
T get() {
return data;
}
};
int main() {
Container<int> intContainer;
intContainer.set(42);
int value = intContainer.get(); // value 为 42
Container<std::string> stringContainer;
stringContainer.set("Hello, World!");
std::string strValue = stringContainer.get(); // strValue 为 "Hello, World!"
return 0;
}
通过使用这些方法,我们可以在C++中实现类的扩展,同时保持封装性和代码的可维护性。