C++ 这是参数还是类型?
在下面的示例代码中,我想知道在C++ 这是参数还是类型?,c++,templates,C++,Templates,在下面的示例代码中,我想知道在Citizen类中传递给getSocialSecurityNumber的参数是什么。为什么是(密钥)而不是(密钥x) 它与类模板/函子有关吗 #include <string> #include <iostream> using namespace std; template <typename T> class Passkey { private: friend T; Passkey() {} Pa
Citizen
类中传递给getSocialSecurityNumber
的参数是什么。为什么是(密钥)
而不是(密钥x)
它与类模板/函子有关吗
#include <string>
#include <iostream>
using namespace std;
template <typename T>
class Passkey {
private:
friend T;
Passkey() {}
Passkey(const Passkey&) {}
Passkey& operator=(const Passkey&) = delete;
};
class Citizen {
public:
string getSocialSecurityNumber(Passkey<Government>) const { return _socialSecurityNumber; };
^^^^ (here)
private:
string _socialSecurityNumber;
};
class Government {
private:
void printCitizenInfo(const Citizen &citizen) const;
};
void Government::printCitizenInfo(const Citizen &citizen) const {
cout << "Citizen SSN: " << citizen.getSocialSecurityNumber(Passkey<Government>()) << endl;
}
#包括
#包括
使用名称空间std;
模板
类密钥{
私人:
朋友T;
密钥(){}
密钥(常量密钥&){}
密码和运算符=(常量密码和)=删除;
};
阶级公民{
公众:
字符串getSocialSecurityNumber(Passkey)常量{return\u socialSecurityNumber;};
^^^^(这里)
私人:
字符串_socialSecurityNumber;
};
阶级政府{
私人:
作废printCitizenInfo(const Citizen&Citizen)const;
};
无效政府::printCitizenInfo(const Citizen&Citizen)const{
coutPasskey
是一种类型。参数显然没有被使用,它没有名字。Passkey
是一种类型。参数显然没有被使用,它没有名字。啊哈,这就是政府“安全”代码的编写方式。@Slava你能给我一点提示吗?啊哈,这就是“安全”的方式政府代码是编写的。@Slava你能给我一点提示吗?那么它的目的是什么?它是如何使用的?参数*没有*使用。好的,如果我理解,它只与强制调用函数GetSocialSecurityNumber的签名有关。那么它的目的是什么?它是如何使用的?参数*没有*使用。好的,如果我据了解,它仅与调用函数getSocialSecurityNumber的强制签名有关