gpt4 book ai didi

c++ - 多态性和覆盖 C++ 类模板中的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:08:12 25 4
gpt4 key购买 nike

<分区>

我想要一个包含我的方法的基本实现的类模板,以及一组使用具有特定类型(double、int、char*)的模板类的子类,并根据需要覆盖这些基本实现的某些子集.但是,除非我将对象声明为子类的实例,否则我重写的方法似乎不会被调用。在探索这个问题时,我想出了以下代码:

#include <iostream>

template <typename T>
class BaseClass {
public:
virtual void print1 (T thing) {
std::cout << "Base print1: " << thing << std::endl;
}

virtual void print2 (T thing) {
std::cout << "Base print2: " << thing << std::endl;
}
};

class IntClass : public BaseClass<int> {
public:
void print2 (int thing) {
std::cout << "Int print2: " << thing << std::endl;
}
};

int main()
{
BaseClass<int> thing = IntClass();
thing.print1(1);
thing.print2(1);

IntClass thing2 = IntClass();
thing2.print1(2);
thing2.print2(2);

return 0;
}

我的预期输出是:

Base print1: 1
Int print2: 1
Base print1: 2
Int print2: 2

但相反,我得到:

Base print1: 1
Base print2: 1
Base print1: 2
Int print2: 2

是否有可能在这里实现我的目标,或者在这种情况下我最好为每种类型创建单独的基类?如果我的术语有点偏离,我深表歉意 - 我是 C++ 的新手。

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