c++创建具有数组作为成员的对象

标签 c++ arrays object

我是 C++ 的新手(来自 Java),实际上我正在为 下列的: 让 foo 成为一个类

int bar[10] = {};

Foo::Foo()
{
    bar[1] = 42;

}

和 doSmth() 是主类中的一个方法:

Foo doSmth(){
Foo f;
f.bar[0] = 10;
return f;
}

主要是这样的:

int main(int argc, char *argv[])
{
Foo f = doSmth();

cout << f.bar[1] << endl;
cout << f.bar[0] << endl;
return 0;
}

这是在 doSmth() 中返回 foo 对象的正确方法吗? 我想在堆栈上创建对象,但我担心 foo 对象中的 array (bar) 何时会从堆栈中删除?

最佳答案

Is this the right way to return the foo object in doSmth()?

当然是。

I want to create the object on stack

你有。

but i'm worried about the array (bar) from the foo object

bar 不是“来自 foo”。 bar 是一个全局静态对象。

f.bar[1]

这是错误的格式,因为 bar 不是 Foo 的成员。要声明一个成员,它必须在类的定义中:

struct Foo {
    int bar[10] = {};
};

when will it be deleted from stack?

如果 bar 有静态存储,例如在您的代码中,那么它会在程序结束时被销毁。如果它是一个(非静态)成员,那么当它的完整对象被销毁时它也被销毁,即包含它的 Foo 的实例。

关于c++创建具有数组作为成员的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394079/

相关文章:

javascript - 如何在数组中的数组的第二个值之后排序?

C++迭代器双循环

c++ - 如何在不丢失顺序的情况下将 std::vector 转换为 std::set

javascript - 循环遍历 angular.js 中的数组列表

java - 如何用数字自动填充二维数组

arrays - 如何使用 React 在数组内循环数组

ruby - 编写一个很棒的、可重用的 "to_s"方法以更好地调试

javascript - 如何在 JavaScript 中更新数组中的特定值

c++ - 创建 string_view 元素数组会引发错误 : unable to find string literal operator ‘operator""sv’ with

c++ - CMake 未启用异常