gpt4 book ai didi

C++:类 - 重载构造函数 - 单变量?

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:28 24 4
gpt4 key购买 nike

我不知道怎么问这个问题,但希望有人能理解。假设我有 3 个不同的类(class)。 A 类、B 类和 C 类。C 类应该将 A 类或 B 类作为构造函数中的参数,并将其存储在私有(private)变量中。

这对于重载的构造函数来说很容易。我的问题是 C 类如何根据使用的构造函数自动使用正确的类? (请注意,这两个类很相似,但来自不同的库,因此没有共享基类)。这可以用模板吗?我对模板没有太多经验。

最佳答案

您可以使用模板轻松完成:

class A;
class B;

template<class AorB>
class C
{
public:
C(AorB aorb)
: aorb_(aorb)
{ }

private:
AorB aorb_;
};

这样做是在 C 类中,标识符 AorB 可以用作任何其他类,事实上它甚至不必是AB 但可以是任何类。

可以这样使用:

A myA;
B myB;

C<A> myCWithA(myA);
C<B> myCWithB(myB);

但是,在使用模板创建类时,您必须记住一件事:规范和实现不能再拆分为单独的头文件和源文件。所有代码都必须在头文件中可用。

成员函数的语法也有些不同。

例子:

template<class T>
class C
{
public:
...

void someFunction();
};

template<class T>
C<T>::someFunction()
{
...
}

关于C++:类 - 重载构造函数 - 单变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084105/

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