gpt4 book ai didi

c++ - 是否有 C++ 等效于 Objective-C 的自动释放?

转载 作者:搜寻专家 更新时间:2023-10-30 23:49:42 25 4
gpt4 key购买 nike

我可以用这种方式在 Objective-C 中编写一个函数。这可用于制作许多 UIButton。

+(UIButton*)getButton:(CGRect)frame{


UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[button setTitle:@"Some title" forState:UIControlStateNormal];

button.frame=frame;

return button;
}

在 C++ 中也能做到吗?我不是在问有关在 C++ 中创建 UIButton 的问题。

但是在函数的帮助下大量生成许多对象,如下所示:

 CString getCstring(some parameters)
{

CString string = L"Hi sampe string.";
return string;

}

我认为在此函数中创建的 CString 对象将在堆栈​​中,一旦离开此函数可能会丢失它的值。

对于 Objective-C 代码,我们可以保留自动释放的对象以使用它。 C++ 中有这样的机制吗?

最佳答案

在C++中你可以做到

CString* getCString(some parameters)
{

CString* string = new CString(L"Hi sample string.");
return string;

}

如果您希望将字符串放在堆上,则在调用者完成后删除(通过在指针上调用 delete)调用者中的字符串。但是在您发布的第一个版本中,我认为没有问题。它是一个堆栈变量,但当然它在调用者中仍然有效,因为它是返回值。

关于c++ - 是否有 C++ 等效于 Objective-C 的自动释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com