依赖于构造函数参数的类方法的特殊实现
Special implementation of class methods depending on constructor parameters
我有一个类:
class MyClass {
int param_;
void MyMethod();
public:
MyClass(int param) : param_(param) {};
}
void MyClass::MyMethod() {
if (param_ == 1) {
std::cout << "1" << std::endl;
/* */
} else {
std::cout << "not 1" << std::endl;
/* */
}
}
我想用另一个定义相同但实现不同的类MyClass1
来证明那些"if"语句。
我不希望用户携带这种差异。是否可以用相同的方式初始化不同类的对象?
MyClass a(5);
MyClass b(1);
a.MyMethod(); // not 1
b.MyMethod(); // 1
我不想使用if
,因为可能有许多这样的方法具有不同的实现。
听起来像是继承的作业和工厂方法
class Base
{
public:
virtual void MyMethod() = 0;
}
class Class1: public Base
{
public:
virtual void MyMethod(){// implement 1}
}
class ClassNot1: public Base // or public Class1, if you have some implementation in Class1 you want use in this class
{
public:
virtual void MyMethod(){// implement not 1}
}
Base* SomeFactoryClass::GetBase(int param)
{
if (param == 1)
return new Class1();
else
return new ClassNot1();
}
您可以通过以下代码使用继承:
class MyClass
{
public:
virtual void MyMethod(void)
{
cout << "1" << endl;
}
};
class MyClass1 : public MyClass
{
public:
virtual void MyMethod(void) override
{
cout << "not 1" << endl;
}
}
用法:
MyClass* a = new MyClass();
MyClass* b = new MyClass1();
a->MyMethod(); // prints 1
b->MyMethod(); // prints not 1
关于c++中继承的一些信息:一,二
相关文章:
- 将非类库分离为标头和实现的方法
- enable_if在类声明之外实现的方法专用化
- 创建一个类方法模板,该模板将使用稍后实现的函数
- 强制派生的类实现私人方法
- 如何用虚拟方法动态实现类
- C++-类方法/空洞的实现
- 我应该在哪里实现我的类方法
- 实现基类方法来访问派生类的属性
- 从继承的类中实现抽象方法
- 访问实现类中类的方法
- 依赖于构造函数参数的类方法的特殊实现
- C++模板类专用化:为什么需要重新实现常见方法
- 如何指定模板类在c++中实现某些方法
- 如何实现将数据从用户应用程序传输到类内部存储器的类方法
- 抽象类方法用其他基类的子类实现
- 在c++中使用list实现类的方法时出现以下错误
- 如何在可变上下文中使用抽象类时实现抽象方法
- 如何强制所有派生类实现虚方法
- 从共享库加载方法,该方法调用在子类中实现的方法
- 类方法定义后的实现