我无法理解此代码片段的语法
" const K&的目的是什么? k = K(),const V& v = V()"?
template<typename K, typename V>
class Entry{
public:
typedef K Key;
typedef V Value;
public:
Entry(const K& k = K(), const V& v = V()) : _key(k), _value(v) {}
....
....
....
private:
K _key;
V _value;
};
谢谢
答案 0 :(得分:1)
K
和V
是模板参数,它们可以是Entry
用户想要的任何数据类型。
k
和v
是Entry
构造函数的输入参数。它们通过const引用传入,并且它们具有指定的默认值,其中K()
默认构造类型为K
的临时对象,而V()
默认构造类型的临时对象V
。如果用户在创建Entry
对象实例时未提供显式输入值,则使用默认值。
例如:
Entry<int, int> e1(1, 2);
// K = int, k = 1
// V = int, v = 2
Entry<int, int> e2(1);
// aka Entry<int, int> e2(1, int())
// K = int, k = 1
// V = int, v = 0
Entry<int, int> e3;
// aka Entry<int, int> e3(int(), int())
// K = int, k = 0
// V = int, v = 0
Entry<std::string, std::string> e4("key", "value");
// K = std::string, k = "key"
// V = std::string, v = "value"
Entry<std::string, std::string> e5("key");
// aka Entry<std::string, std::string> e4("key", std::string())
// K = std::string, k = "key"
// V = std::string, v = ""
Entry<std::string, std::string> e6;
// aka Entry<std::string, std::string> e4(std::string(), std::string())
// K = std::string, k = ""
// V = std::string, v = ""