c++关于模板实例化的一些问题

浏览:14日期:2023-05-13

问题描述

template<typename T> class Stack{};void f1(Stack<char> a){}//aclass Exercise{ Stack<double> &rsd; //b Stack<int> i; //c};int main(){ using namespace std; Stack<char> *sc; //d f1(*sc); //e int i = sizeof(Stack<string>); //f}问:解释哪里发生了什么样的实例,为什么?哪里没有发生实例化,原因。个人愚见:首先a和d产生Stack<char>这样一个实例,然后f也产生Stack<string>实例e之前编译器已经知道Stack<char>,所以pass,b和c没有实际使用,pass所以最终编译器生成的实例化是:char和string的Stack实例。对吗?这个逻辑??

问题解答

回答1:

你问的是 C++ Primer Exercise 16.27 吧,答案可以参考这里,讨论可以参考这里。

相关文章: