gpt4 book ai didi

c++ - c++中结构和类中的析构函数

转载 作者:行者123 更新时间:2023-11-27 22:54:50 24 4
gpt4 key购买 nike

我应该为这个结构创建析构函数吗?或者是否有任何隐式析构函数 && 当它超出范围时它会被破坏?

这里myLogStructure和mySubject都是struct类型。

#include "stdafx.h"
#ifndef MyLogStruct_H
#define MyLogStruct_H

#include <string>
#include<windows.h>

using namespace std;

struct mySubject
{
string Security_ID;
string Account_Name;
string Account_Domain;
string Logon_ID;
};

struct myLogStructure
{
string message;
bool isAvailableMySubject;
mySubject mySubject1;
};
#endif

我应该为此实现析构函数吗?或者当它超出范围时它会被破坏吗?

这里MyLogStructure和MySubject都是类类型。请注意一件事,我在此类中使用了指针。

    #include "stdafx.h"
#ifndef MyLogStructure_H
#define MyLogStructure_H

#include <string>
#include "MySubject.h"

using namespace std;

class MyLogStructure
{
public:
MyLogStructure(LPWSTR providerMessageString1, int version1);
~MyLogStructure(void);
const wchar_t* message;
LPWSTR providerMessageString;
int version;
bool isAvailableMySubject;
MySubject*mySubject;
};
#endif

class MySubject
{
public:
MySubject(const wchar_t* Security_ID1, const wchar_t* Account_Name1, const wchar_t* Account_Domain1, const wchar_t* Logon_ID1);
~MySubject(void);

const wchar_t* Security_ID;
const wchar_t* Account_Name;
const wchar_t* Account_Domain;
const wchar_t* Logon_ID;
};

最佳答案

是否需要析构函数不是取决于您使用的是struct还是class。决定因素是 struct/class 是否已获取必须在对象生命周期结束时显式释放的资源。如果问题的答案是肯定的,那么你需要实现一个析构函数。否则,您不需要实现它。

对于第一组struct,最好让编译器实现析构函数。在析构函数中无事可做。

如果您实现它们,它们将是:

~mySubject() {}

~myLogStructure() {}

您可能需要在第二组类中实现析构函数,具体取决于您是否需要释放任何资源。

由于您有指向 w_char 的指针来存储该数据,您很可能需要实现析构函数,并释放在对象的生命周期内获取的内存。

关于c++ - c++中结构和类中的析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34259436/

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