gpt4 book ai didi

c++ - 将动态创建的对象分配给作为类的私有(private)成员的指针有什么问题吗?

转载 作者:太空宇宙 更新时间:2023-11-04 15:05:43 24 4
gpt4 key购买 nike

例如,假设我有一个游戏类:

class Game{
public:
Game();
~Game();

void CreateWindowClass(HINSTANCE);
void CreateRessources(HINSTANCE);

void ShowMainScreen();

Winsock* CreateWinsock();

MessageLog* CreateMessageLog();

D2DResources* CreateD2DResources(HWND);

HWND Getm_hWnd();

public:
D2DResources* pD2DResources;
Winsock* pWinsock;
MessageLog* pMessageLog;

private:
HWND m_hWnd;

};

Game 中的 3 个指针是这样分配的:

Winsock* Game::CreateWinsock()
{
pWinsock = new Winsock;

return pWinsock;
}

这会造成什么问题吗?另外,我是否会像这样删除动态创建的对象:delete pWinsock;?

最佳答案

pWinsock是公共(public)成员,但无论哪种方式都没有错。两者 pWinsock和函数的指针返回值指向动态分配的Winsock目的。只要你delete某个时候的对象,你没有内存泄漏。

这里唯一的问题是这个函数的客户端可能delete指针本身,而你的 Game对象可能依赖于 pWinsock指针在特定持续时间内有效(可能在其整个生命周期内)。您可以使用智能指针最好地表达您的意图。 std::shared_ptr<Winsock>在这里将是一个不错的选择,因为您的 Game对象创建 Winsock然后与客户共享所有权。

关于c++ - 将动态创建的对象分配给作为类的私有(private)成员的指针有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487867/

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