C :类 - 超载构造函数 - 单个变量
C++: Class - Overloaded Constructors - single variable?
我不确定如何问这个,但希望有人会理解。可以说我有3个不同的班级。A类,B类和C类C类C类应在构造函数中将A或B类作为参数并将其存储在私有变量中。
使用超载的构造函数很容易。我的问题是,C类C自动化如何根据使用了哪些构造函数来使用正确的类?(请注意,这两个类相似,但来自不同的库,因此没有共享的基类)。模板是否可以使用?我对模板没有很多经验。
您可以使用模板很容易做到这一点:
class A;
class B;
template<class AorB>
class C
{
public:
C(AorB aorb)
: aorb_(aorb)
{ }
private:
AorB aorb_;
};
这样做的是,C
类中的标识符AorB
可以用作任何其他类,实际上,它甚至不必是A
或B
的实例班级。
可以这样使用:
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()
{
...
}
是的,模板是可以的:
#include <iostream>
template<class T>
class C {
public:
C(T const& ref) : ref(ref) {}
void doStuff() const {
ref.doStuff();
}
private:
T ref;
};
class A {
public:
void doStuff() const {
std::cout << "A::doStuff" << std::endl;
}
};
class B {
public:
void doStuff() const {
std::cout << "B::doStuff" << std::endl;
}
};
int main() {
C<A> foo((A()));
foo.doStuff();
C<B> bar((B()));
bar.doStuff();
}
相关文章:
- 如何使用单个返回语句返回对变量的引用
- 单个变量如何存储多个值?
- 使用单个变量对字符输入进行计数
- 如何使用C++中可以具有多种数据类型的单个变量
- 对单个变量的原子操作
- C++单个变量来处理来自用户的多个类
- 单个Cout中单个变量的多个更新的顺序
- 如何在单个变量中同时存储 int 或字符串,而不会丢失它们的类型
- 从带有空间的.txt中读取完整的文本,为单个变量C
- 单个变量的线程安全
- C :类 - 超载构造函数 - 单个变量
- c++将单个变量作为引用和常量引用传递
- 为什么在单个变量上我需要指定内存地址,而在数组上我不需要它?
- 读取文件并将行拆分为单个变量
- 标准对单个 if 语句中单个变量的双重比较有什么看法
- Netcdf C++|如何为单个变量编写记录
- c++从单个变量中获取多个数字
- 单个变量初始化的c++风格
- 检索单个变量中的不同Qmap
- 将单个变量作为std::initializer_list作为函数参数传递