template class Stack{};
void f1(Stack a){} //a
class Exercise
{
Stack &rsd; //b
Stack i; //c
};
int main()
{
using namespace std;
Stack *sc; //d
f1(*sc); //e
int i = sizeof(Stack); //f
}
问:解释哪里发生了什么样的实例,为什么?哪里没有发生实例化,原因。
个人愚见:首先a和d产生Stack这样一个实例,然后f也产生Stack实例
e之前编译器已经知道Stack,所以pass,b和c没有实际使用,pass
所以最终编译器生成的实例化是:char和string的Stack实例。
对吗?这个逻辑??
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你问的是 C++ Primer Exercise 16.27 吧,答案可以参考这里,讨论可以参考这里。