C++ 我被开除的原因是什么? 包括“stdafx.h” #包括 模板 类样本 { 公众: 样本(); 静态int-i; }; 模板 int样本::i=0; 模板 Sample::Sample() { i++; cout
C++ 我被开除的原因是什么? 包括“stdafx.h” #包括 模板 类样本 { 公众: 样本(); 静态int-i; }; 模板 int样本::i=0; 模板 Sample::Sample() { i++; cout,c++,templates,C++,Templates,Sample::i,Sample::i和Sample::i是三个不同的变量。因此得到111。Sample::i,Sample::i和Sample::i是三个不同的变量。因此得到111。Sample是用于创建三个变量的类模板本例中的不同类,每个类都有自己的不同iSample是一个类模板,在本例中用于创建三个不同的类,每个类都有自己的不同i这是输出为111(与123相反)的原因就是说,Sample、Sample和Sample是三种完全不同的类型,因此它们都有各自的静态变量,称为i 您有一个名为Sam
Sample::i
,Sample::i
和Sample::i
是三个不同的变量。因此得到111。Sample::i
,Sample::i
和Sample::i
是三个不同的变量。因此得到111。Sample
是用于创建三个变量的类模板本例中的不同类,每个类都有自己的不同i
Sample
是一个类模板,在本例中用于创建三个不同的类,每个类都有自己的不同i
这是输出为111
(与123
相反)的原因就是说,Sample
、Sample
和Sample
是三种完全不同的类型,因此它们都有各自的静态变量,称为i
您有一个名为
Sample
的模板,每次使用不同的模板参数实例化它时,它都会使用该模板根据该模板动态创建一个新类。但是使用该模板创建的类彼此之间没有关系,也不共享静态信息。output是111
(与123
相反)是Sample
,Sample
和Sample
是三种完全不同的类型,因此它们都有各自独立的静态变量i
您有一个名为
Sample
的模板,每次使用不同的模板参数实例化它时,它都会使用该模板根据该模板动态创建一个新类。但是使用该模板创建的类彼此之间没有关系,也不共享静态信息。如果您有一个模板带有静态成员变量的te类编译器应该确保对于“每个”类型名T,静态变量有一个且只有一个副本。因为您已经用三种不同的类型实例化了示例类,所以您将输出视为“1”对于每种类型。当您有一个带有静态成员变量的模板类时,编译器应该确保对于“每个”类型名T,静态变量有一个且只有一个副本。因为您已经用三种不同的类型实例化了示例类,所以您会看到输出为“1”对于每种类型。Sample
,Sample
,Sample
是三种不同的类型,每种类型都有自己的静态变量
如果你想得到123
,你必须把static int i
放在一个公共基类中。Sample
,Sample
,Sample
是三种不同的类型,每种类型都有自己的静态变量
如果您想获得123
,您必须将静态int i
放在一个公共基类中。尝试添加行
Sample<float> s2_2;
尝试添加行
Sample<float> s2_2;
以后,请通过选择代码并单击编辑器中的“101010”按钮来格式化代码。是的,3个A。您期望得到什么?您期望得到什么?
#包括“stdafx.h”
是一个VS讨厌的东西,本例中不需要它。没有标题
。而是
。而且它是std::cout
。哦,你得到这个输出是因为语言就是这样定义的。(如果你想要更好的解释,你应该说明你的期望以及结果与期望的偏差。)以后,请通过选择代码并单击编辑器中的“101010”按钮来格式化代码。是的,3个A。您期望得到什么?您期望得到什么?#包括“stdafx.h”
是一个VS讨厌的东西,本例中不需要它。没有标题
。而是
。而且它是std::cout
。哦,你得到这个输出是因为语言就是这样定义的。(如果你想要更好的解释,你应该说明你的期望以及结果与期望的偏差。)
#include <typeinfo>
:
:
template<class T>
Sample<T>::Sample()
{
i++;
std::cout << typeid(T).name() << ':' << i << std::endl;
}