关于函数返回引用的问题
C++ Primer中说程序员应当知道下面一个易犯的错误:
********************************************************************
1、返回一个指向局部对象的引用
但我看不明白下面的例子
Matrix& grow( Matrix* p )
{
matrix *res;
// 在动态存储中分配一个更大的Matrix
// res是指向新Matrix的指针
// 将*p内容复制到*res
return *res;
}
res不是一个局部对象吗?不明白???这个例子好像错了???函数定义
返回值为Matrix&,可函数却返回了一个指针????怎么回事????
既然不能返回指向局部对象的引用,那返回值是不是只能定义为全局或者向下
面的情况,函数的形参为引用类型,是不是这样子?
const int &get_val( vector<int> &vi, int ix )
{
return vi[ix];
}
*********************************************************************
还有一个小问题?
#include <iostream>
#include <vector>
using namespace std;
#pragma warning(disable: 4786)
int ai[4] = {0, 1, 2, 3};
vector<int> vec( ai, ai+4 );
int main()
{
vector<int> vec( ai, ai+4 );
return 1;
}
我写了两个相同的定义vector<int> vec( ai, ai+4 ); 为什么可以通过运行?