cyb*_*cop 3 c++ constructor struct
现在我有
Private:
Struct PageManagerData
{
char name[20];
IPage* storePagePtr;
}
Run Code Online (Sandbox Code Playgroud)
我想将name初始化为类似于'\0'
storePagePtr NULL
但现在我无法在构造函数中访问这些值以初始化它们.我该怎么做?
您的代码看起来不像有效的C++
struct PageManagerData
{
PageManagerData() : name { 0 }, storePagePtr(nullptr) { }
private:
char name[20];
IPage* storePagePtr;
};
Run Code Online (Sandbox Code Playgroud)
这仍然不是典型的C++:
struct PageManagerData
{
private:
std::string name;
std::unique_ptr<IPage> storePage;
};
Run Code Online (Sandbox Code Playgroud)
这避免了大量潜在的内存管理/初始化/缓冲区溢出错误.具体来说,它利用零度规则:您可以在不实施特殊成员的情况下实现
并享受强大的对象值语义,没有泄漏和UB.