C++ Primer(第5版) 练习 16.27
练习 16.27 对下面每条带标签的语句,解释发生了什么样的实例化(如果有的话)。如果一个模板被实例化,解释为什么;如果未实例化,解释为什么没有。
template <typename T> class Stack{};
void f1(Stack<char>); // ( a )
class Exercise{
Stack<double> &rsd; // ( b )
Stack<int> &si; // ( c )
};
int main(){
Stack<char> *sc; // ( d )
f1(*sc); // ( e )
int iObj = sizeof(Stack<string>); // ( f )
}
环境:Linux Ubuntu(云服务器)
工具:vim
代码块
template <typename T> class Stack{};
//仅仅声明,类模板没有实例化
void f1(Stack<char>); // ( a )
class Exercise{
//声明一个类模板的引用,没有实例化
Stack<double> &rsd; // ( b )
//实例化类模板
Stack<int> si; // ( c )
};
int main(){
//声明类模板的指针,没有实例化
Stack<char> *sc; // ( d )
//实例化对象
f1(*sc); // ( e )
//实例化,需要计算类模板产生对象的大小
int iObj = sizeof(Stack<string>); // ( f )
}
标签:解释,16.27,int,class,f1,实例,Stack,模板
From: https://blog.csdn.net/navicheung/article/details/140901800