Nếu tôi có khai báo như sau:Tôi có nên xóa các thành viên chuỗi của một lớp C++ không?
#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();
};
gì mã nên được trong destructor? Tôi có nên "xóa" các trường std::string
không?
Nhận xét về kiểu: Thay vì trả về 'const char *' từ các hàm, tôi muốn trả về 'const std :: string &'. Điều này là có thể khi chuỗi trả về là một thành viên của đối tượng. Và tương tự cho đầu vào, tôi muốn 'const std :: string &' –
Bạn thậm chí có bận tâm để thử điều này trước khi bạn đăng câu hỏi? Bạn không thể xóa các chuỗi đó, ngay cả khi bạn muốn. –
Đôi khi bạn có thể thấy mọi người gọi 'clear()' trên các thùng chứa tiêu chuẩn trước khi chúng vượt quá phạm vi ("xóa" theo nghĩa này). Điều đó cũng không cần thiết. – UncleBens