gpt4 book ai didi

c++ - 工厂方法说明

转载 作者:行者123 更新时间:2023-12-01 14:52:49 26 4
gpt4 key购买 nike

我正在学习工厂方法,何时使用以及为什么使用,但是有一点模棱两可的是,为什么有人为工厂方法使用static关键字,有人可以弄清楚。
如下代码所示:

enum VehicleType { 
VT_TwoWheeler, VT_ThreeWheeler, VT_FourWheeler
};

// Library classes
class Vehicle {
public:
virtual void printVehicle() = 0;
static Vehicle* Create(VehicleType type);
};
class TwoWheeler : public Vehicle {
public:
void printVehicle() {
cout << "I am two wheeler" << endl;
}
};
class ThreeWheeler : public Vehicle {
public:
void printVehicle() {
cout << "I am three wheeler" << endl;
}
};
class FourWheeler : public Vehicle {
public:
void printVehicle() {
cout << "I am four wheeler" << endl;
}
};

// Factory method to create objects of different types.
// Change is required only in this function to create a new object type
Vehicle* Vehicle::Create(VehicleType type) {
if (type == VT_TwoWheeler)
return new TwoWheeler();
else if (type == VT_ThreeWheeler)
return new ThreeWheeler();
else if (type == VT_FourWheeler)
return new FourWheeler();
else return NULL;
}

PS:可以在GeeksForGeeks上找到此代码。

最佳答案

静态方法是类类型的一种方法。这意味着,如果您调用Vehicle方法,则不需要为Create类使用变量。您可以这样调用该方法:Vehicle::Create(YOU_TYPE),而不是使用带有类变量的'regular'方法。 Vehicle还具有纯虚拟方法,这就是为什么您不能具有此类的变量,因此该方法是静态的。

关于c++ - 工厂方法说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com