gpt4 book ai didi

c++ - 为什么在使用 -O3 标志函数编译 C++ 代码后生成错误的输出?

转载 作者:行者123 更新时间:2023-11-30 01:46:17 25 4
gpt4 key购买 nike

<分区>

在主函数中我写

  Function fun;
fun.AddName("string1");
std::cout << fun.GetNumberOfIndeks();

我在屏幕上看到两个不同的数字:

  • 1(错误)当 g++ 有 -O3 标志时
  • 0 当 g++ 有 -O0 标志

下面是类和方法的定义:

class IFunction
{
public:
virtual void AddName(std::string nazwa_funkcji) = 0;
virtual std::size_t GetNumberOfIndeks() = 0;
};

class Function: public IFunction
{
public:
Function();
void AddName(std::string nazwa_funkcji);
std::size_t GetNumberOfIndeks();

private:
std::vector<std::unique_ptr<std::string>> vp_nazwy_indeksow_;
std::unique_ptr<::std::string> p_nazwa_;
}

Function::Function():p_nazwa_(new std::string(""))
{

}

std::size_t Function::GetNumberOfIndeks()
{
vp_nazwy_indeksow_.size();
}

void Function::AddName(std::string nazwa_funkcji)
{
std::unique_ptr<::std::string> pl_nazwa_funkcji (new std::string(nazwa_funkcji));
p_nazwa_ = std::move(pl_nazwa_funkcji);
}

当我评论第二行的时候

Function fun;
//fun.AddName("string1");
std::cout << egzFunkcji3.GetNumberOfIndeks();

我在屏幕上看到预期的 和 g++ 标志 -O3。问题出在哪里?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com