Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我被开除的原因是什么? 包括“stdafx.h” #包括 模板 类样本 { 公众: 样本(); 静态int-i; }; 模板 int样本::i=0; 模板 Sample::Sample() { i++; cout_C++_Templates - Fatal编程技术网

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;
}