C++ 类的模板专门化
我正在尝试实现模板专门化。我需要一个模板和类:C++ 类的模板专门化,c++,templates,c++11,C++,Templates,C++11,我正在尝试实现模板专门化。我需要一个模板和类: template <class T> class Person{ public: Person(char one, T two){ this -> prv = one; this -> druh = two; } void explain(); private: char prv; T druh;
template <class T>
class Person{
public:
Person(char one, T two){
this -> prv = one;
this -> druh = two;
}
void explain();
private:
char prv;
T druh;
};
并重新定义了解释方法
void Person<char>::explain(){
cout << "Druh is a char " << endl;
}
void Person::explain(){
cout实现您想要做的事情的一个简单方法是:
模板
甲级{
公众:
A():c('z'){
}
void printChar(){
std::cout实现您想要做的事情的一个简单方法是:
模板
甲级{
公众:
A():c('z'){
}
void printChar(){
std::cout您可以只指定以下方法:
template <>
void Person<char>::explain(){
cout << "Druh is char" << endl;
}
模板
void Person::explain(){
cout您可以只指定以下方法:
template <>
void Person<char>::explain(){
cout << "Druh is char" << endl;
}
模板
void Person::explain(){
cout classPerson
不包含名为prv
的成员它是否应该从class Person的第一次声明中获取私有变量?
否。您认为它为什么应该这样做?那么使用模板专门化有什么意义?为什么不定义另一个类呢?模板专门化不是inheritance@user3706129:当您专门化一个类模板时,您正在创建另一个类。专门化的原因是使调用方仍然可以是泛型的。例如,调用方可能正在使用Person
。专门化允许他们不必检查T
是否是char
,就可以知道要使用哪个类。classPerson
不包含名为prv
的成员。它是否应该从类Person的第一次声明中获取私有变量?
否。您认为它为什么应该这样做?使用模板专门化有什么意义?为什么不定义另一个类。模板专门化不是inheritance@user3706129:当你cialize一个类模板,您正在创建另一个类。您专门化的原因是使调用方仍然可以是泛型的。例如,调用方可能正在使用Person
。专门化允许他们不必检查T
是否是char
,就可以知道要使用哪个类。
void Person<char>::explain(){
cout << "Druh is a char " << endl;
}
template <>
void Person<char>::explain(){
cout << "Druh is char" << endl;
}