函数重载和调用
function overload and calling
#include <iostream>
using namespace std;
template <class X, class Y>
class A:
{
public:
X r;
Y s;
A() { cout << "hi" << endl; }
A(X r, Y s) { cout << r << " " << s << endl; }
};
int main()
{
int val1 = 0;
float val2 = 0;
char c;
cin >> val1;
cin >> val2;
cin >> c;
A<char> a;
A<int, char>(val1, c);
A<char, float>(c, val2);
return 0;
}
代码无法编译,因为第 A<char> a;
行的参数太少。
我想在class中执行A()
函数,但它似乎总是认为它需要更多的参数。有人可以告诉我为什么吗?
模板正好需要两个参数,也许你的意思是
A<char, char> a;
请注意,您可以默认分配参数类型,以避免这种情况。
这些行缺少 A.
实例的变量名称
A<int, char>(val1, c);
A<char, float>(c, val2);
您现在设置模板的方式总是必须指定类型 X
和 Y
。如果你用默认值指定第二个模板,你可以只用第一个模板调用它,而代码会假设第二个模板是默认值:
template <class X, class Y = char>
在这种情况下,默认值为 char
。
#include <iostream>
using namespace std;
template <class X, class Y>
class A:
{
public:
X r;
Y s;
A() { cout << "hi" << endl; }
A(X r, Y s) { cout << r << " " << s << endl; }
};
int main()
{
int val1 = 0;
float val2 = 0;
char c;
cin >> val1;
cin >> val2;
cin >> c;
A<char> a;
A<int, char>(val1, c);
A<char, float>(c, val2);
return 0;
}
代码无法编译,因为第 A<char> a;
行的参数太少。
我想在class中执行A()
函数,但它似乎总是认为它需要更多的参数。有人可以告诉我为什么吗?
模板正好需要两个参数,也许你的意思是
A<char, char> a;
请注意,您可以默认分配参数类型,以避免这种情况。 这些行缺少 A.
实例的变量名称A<int, char>(val1, c);
A<char, float>(c, val2);
您现在设置模板的方式总是必须指定类型 X
和 Y
。如果你用默认值指定第二个模板,你可以只用第一个模板调用它,而代码会假设第二个模板是默认值:
template <class X, class Y = char>
在这种情况下,默认值为 char
。