c++ 工厂函数
在C++中,工厂函数是一种特殊的函数,用于创建对象并返回对象的指针或引用。它通常用于封装对象的创建逻辑,以便在需要时动态地创建对象。
工厂函数的常见用法是在抽象基类中定义一个静态成员函数,该函数返回一个指向派生类对象的指针或引用。这样,客户端代码可以通过调用工厂函数来获取派生类对象的指针或引用,而不需要知道具体的派生类类型。
下面是一个简单的示例,演示了如何使用工厂函数:
cpp
class Shape {
public:
virtual void draw() = 0; // 纯虚函数
};
class Circle : public Shape {
public:
void draw() override {
std::cout << "Drawing a circle" << std::endl;
}
};
class Rectangle : public Shape {
public:
void draw() override {
std::cout << "Drawing a rectangle" << std::endl;
}
};
// 工厂函数,用于创建Shape对象
Shape* createShape(const std::string& type) {
if (type == "circle") {
return new Circle();
} else if (type == "rectangle") {
return new Rectangle();
} else {
return nullptr; // 无效类型,返回空指针
}
}
指针调用成员函数在上面的示例中,我们定义了一个抽象基类Shape,它有一个纯虚函数draw()。我们还定义了两个派生类Circle和Rectangle,它们分别实现了draw()函数。
工厂函数createShape()接受一个字符串参数type,根据该参数的值创建相应的Shape对象,并返回指向该对象的指针。客户端代码可以通过调用createShape()函数来获取Shape对象的指针,并调用其draw()函数。这样,客户端代码就可以动态地创建不同类型的Shape对象,而不需要知道具体的派生类类型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论