Jeśli mam następującą deklarację:Czy powinienem usunąć członków string z klasy C++?
#include <iostream>
#include <string>
class DEMData
{
private:
int bitFldPos;
int bytFldPos;
std::string byteOrder;
std::string desS;
std::string engUnit;
std::string oTag;
std::string valType;
int idx;
public:
DEMData();
DEMData(const DEMData &d);
void SetIndex(int idx);
int GetIndex() const;
void SetValType(const char* valType);
const char* GetValType() const;
void SetOTag(const char* oTag);
const char* GetOTag() const;
void SetEngUnit(const char* engUnit);
const char* GetEngUnit() const;
void SetDesS(const char* desS);
const char* GetDesS() const;
void SetByteOrder(const char* byteOrder);
const char* GetByteOrder() const;
void SetBytFldPos(int bytFldPos);
int GetBytFldPos() const;
void SetBitFldPos(int bitFldPos);
int GetBitFldPos() const;
friend std::ostream &operator<<(std::ostream &stream, DEMData d);
bool operator==(const DEMData &d) const;
~DEMData();
};
co kod powinien być w destruktora? Czy powinienem "usunąć" pola std::string
?
Komentarz do stylu: Zamiast zwracania 'const char *' z funkcji, wolałbym zwrócić 'const std :: string &'. Jest to możliwe, gdy zwracany łańcuch jest elementem obiektu. I podobnie dla danych wejściowych, wolałbym 'const std :: string &' –
Czy próbowałeś jeszcze tego przed opublikowaniem pytania? Nie można było usunąć tych łańcuchów, nawet gdybyś chciał. –
Czasami można zobaczyć ludzi nazywających 'clear()' na standardowych kontenerach, zanim wykroczą poza zakres ("usunięcie" w tym sensie). To też nie będzie konieczne. – UncleBens