Si tengo la siguiente declaración:¿Debo eliminar los miembros de cadena de una clase de 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();
};
qué código debe haber en el destructor? ¿Debo "eliminar" los campos std::string
?
Un comentario sobre el estilo: en lugar de devolver 'const char *' de las funciones, prefiero devolver 'const std :: string &'. Esto es posible cuando la cadena devuelta es un miembro del objeto. Y de manera similar para la entrada, preferiría 'const std :: string &' –
¿Te molestaste en probar esto antes de publicar la pregunta? No podría eliminar esas cadenas, incluso si quisiera. –
A veces se puede ver a personas que llaman 'clear()' en contenedores estándar antes de que salgan del alcance ("eliminar" en este sentido). Eso tampoco será necesario. – UncleBens