【发布时间】:2014-10-03 18:22:57
【问题描述】:
目前我有两个计划,要么返回对象本身,
std::vector<std::vector<std::string> > myfunc()
// initialize a 2d vector (matrix) with fixed size
std::vector<std::vector<std::string> > *res = new std::vector<std::vector<std::string> > (nc, std::vector<std::string>(nr));
// fill res up with some operations
return *res;
}
int main(int argc, char const* argv[])
{
std::vector<std::vector<std::string> > x = myfunc()
// do something with x
return 0;
}
或者返回一个指针:
std::vector<std::vector<std::string> >* myfunc()
// initialize a 2d vector (matrix) with fixed size
std::vector<std::vector<std::string> > *res = new std::vector<std::vector<std::string> > (nc, std::vector<std::string>(nr));
// fill res up with some operations
return res;
}
int main(int argc, char const* argv[])
{
std::vector<std::vector<std::string> >* x = myfunc()
// do something with x
return 0;
}
但我的直觉告诉我他们两个都有问题。有什么建议吗?
【问题讨论】:
-
您需要使用
new的任何特殊原因?为什么不直接创建一个对象,然后按值返回呢?
标签: c++ return heap-memory