在C++类中使用指针成员
Using pointer member in C++ class
我正在尝试用我的类和std::vector做一些工作。我遇到了跟踪问题,=
这是我的代码:
class A
{
private:
........
public:
vector<int>* ret_vec();
};
vector<int>* A::ret_vec()
{
vector<int> vec; // vec is declared as a local variable
......
return &vec;
}
int main()
{
.....
vector<int>* vec = A.ret_vec(); // size of vec is 0 !!!
}
正如您在代码中看到的,vector<int>* A::ret_vec()
中的vec
被声明为局部变量,当我将其分配给main
中的指针时,vec
的大小为0。
因此,我使用了以下方法:
class A
{
private:
vector<int> vec; // vec is declared as a member variable
public:
vector<int>* ret_vec();
};
vector<int>* A::ret_vec()
{
......
return &vec;
}
int main()
{
.....
vector<int>* vec = A.ret_vec(); // size of vec is ok
}
现在,当我将vec
声明为成员变量时,当我把它分配给main
中的本地指针时,它的大小与我预期的完全一样。
我能知道这是为什么吗?非常感谢。
==========================================================编辑:
很抱歉,我一开始没有把自己解释清楚。我正在处理一个大型数据集vec
,时间性能是我当前的首要任务。因此,我担心按值返回向量不是一个选项。
返回一个悬空指针并运行到未定义的行为中。返回指向本地自动变量的指针是不合法的。
返回一个指向局部变量的指针,该变量将在函数调用后删除。所以返回指针并不是一个好的做法。只需返回对象。
相关文章:
- 如果基类包含双指针成员,则派生类的构造函数
- C++正确的指针成员初始化
- 是否可以使用智能指针成员设置具有另一个结构的结构?
- 为什么 operator() 处的指针成员不起作用?
- 更改队列指针成员的值需要在 C++ 中出现奇怪的错误
- 如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?
- 结构对象的指针成员在传递给函数时被修改
- 参数的混合值,当我调用指针成员函数时
- 如何正确使用结构的共享指针成员?
- C++:私有类指针成员返回未定义的值
- 在函数中传递带有指针成员的结构是浅拷贝或深拷贝在 C 中
- 包含指针成员的嵌套结构
- 在 c++ 中,为什么 -> 被称为二进制中缀指针成员访问运算符?
- C++ 类指针成员行为奇怪(错误)
- 常量结构的指针成员
- 在类C++指针成员中
- 指针成员未在复制构造函数中初始化
- C++移动拥有指针成员的构造函数
- C++ 包含唯一指针成员变量的类的赋值运算符
- 如何使用 QPoint 指针成员对类进行排队和取消排队