c/c++ 掉过的坑


c/c++ 掉过的坑

1. vector.size()为零的问题

1
2
3
4
5
//size返回的是size_t所以当size=0是使用 i<=size-1就会报错,因为此时 size-1为(-1)最大值
for (int i = 0; i < array_double_res.size(); i++)
{
std::cout << array_double_res.at(i) << std::endl;
}

2. 函数返回中的生命周期问题

想要函数返回一个值,例如 std::string,则最好在使用引用类型的返回值,并在函数中使用指针new一个string出来。

1
2
3
4
5
6
7
8
9
10
11
12
13
std::string& get_string()
{
if (this && this->type == JSON_TYPE_STRING)
{
return this->string;
}
else
{
std::string* str =new std::string("");
return *str;
}
}

3. 改变引用的值之后原本的值不变???

函数 Json_data& get_operator(); 返回引用类型,但是函数返回语句为: return Json_data类型的数据,自然不会正常引用。所以改为返回 Json_data& 类型即可。

实际上 我是将 typedef Json_data& Operator; 写成了 typedef Json_data Operator; 没有明确引用类型,而在声明 op 时也没有进行引用声明。

其实只需要在声明的时候明确引用以及在函数声明的时候明确引用即可。


文章作者: 崔文耀
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 崔文耀 !
  目录