更改输出的变量
A Variable changing the output
所以我只是运行一个简单的例子,可以使用一些帮助来理解发生了什么
我在变量"随机数"注释的情况下运行测试,输出为
Construct
Invoke
Destruct
所以我再次运行测试,但变量"随机数"未注释,输出为
Construct
Destruct
Invoke
我尝试了很多次,结果相同,但我真的不明白为什么该变量会改变测试器的寿命......
测试:
struct Container
{
template<typename T>
Container(T&& O) : Data((void*)std::addressof(O)) {}
private:
void* Data;
//std::weak_ptr<int> RandomNumber;
};
struct Tester
{
Tester() { std::cout << "Construct" << std::endl; }
~Tester() { std::cout << "Destruct" << std::endl; }
};
void TestFunction1(const std::vector<Container>& Data)
{
std::cout << "Invoke" << std::endl;
}
int main()
{
TestFunction1({ Tester() });
return 0;
}
在 Windows 10 上多次运行代码后,我观察到无论是否注释weak_ptr<int> RandomNumber
它都会产生几乎相同的输出:
Construct
Invoke
Destruct
这意味着系统中的输出不同,因为其他在线编译器产生了与您相同的结果。最可能的原因是输出依赖于系统/编译器以及编译器所做的不同优化。
在多个配置上进行测试后,结果因系统和编译器而异。因此,很难预测结果可能是什么。
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 使用静态变量的递归调用的不同输出
- C++具有模板成员变量的类. 和参数内存输出
- 更改输出的变量
- 如何在C++中访问作用域的变量输出?
- 简化C++包括变量名称和函数输出的模式
- C++ - 输出与初始化变量不同?
- 是否可以在C++中基于程序集输出(.dll或.exe)定义变量
- 当对字符变量使用toupper()时,所述char变量输出多个字符.我该如何防止这种情况发生
- 如何让变量随机输出四个单词之一
- 输出(用于 GraphViz)提升图顶点及其属性,使用具有私有变量的类作为捆绑属性
- 如何将C++输出捕获到 Bash 变量?
- 当我在循环内打印变量时无限输出
- 字符串比较在与变量一起使用时给出不同的输出
- 双变量输出 32767 始终代替用户输入
- 使用std :: ofstream中的c 中的float变量输出
- C++:Xcode中未初始化的变量输出为0
- C++转义字符和引用变量输出混淆
- 矢量类C++的变量输出不正确
- 硬编码变量输出中没有反斜杠,但在文件输出中存在