gpt4 book ai didi

C++类设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:52 26 4
gpt4 key购买 nike

目前我正在使用以下结构开发我的大部分 C++ 类,我想知道社区是否可以给我一些关于如何改进我的类设计以使其在未来更便携、友好和可维护的提示。

#include <vector>
#include <iostream>

namespace CompanyName
{
class Uri;
class Regex;

class String
{
public:
String();
String(const char*);
String(const String&);

virtual ~String();

void trim();
void erase();
void remove(const int);
void remove(const int, const size_t);

void uppercase();
void lowercase();

bool is_null() const;
bool is_empty() const;

size_t length() const;

void append(const String&);

bool compare(const String&) const;
bool compare(const String&, const bool) const;

void replace(const Regex&, const String&);

std::vector<String> split(const Regex&) const;

static const char* to_utf8(const String&);
static const uint16_t* to_utf16(const String&);
static const uint32_t* to_utf32(const String&);

static String from_utf8(const char*);
static String from_utf16(const uint16_t*);
static String from_utf32(const uint32_t*);

static String resource(const Uri&, const int);
static String resource(const Uri&, const String&);

String& operator=(String rhs);
String& operator+(const String& rhs);
String& operator+=(const String& rhs);

bool operator==(const String&) const;
bool operator!=(const String&) const;

bool operator<(const String&) const;
bool operator>(const String&) const;

friend std::ostream& operator<<(std::ostream&, const String&);
friend std::istream& operator>>(std::istream&, const String&);

static const String null;
static const String empty;

protected:
struct protected_pimpl;
protected_pimpl* _protected_pimpl;

private:
struct private_pimpl;
private_pimpl* _private_pimpl;
};

//we have to extract the content so as to not expose the UnicodeString.
inline std::ostream& operator<<(std::ostream& stream, const CompanyName::String& rhs)
{
const char* value = String::to_utf8(rhs);
stream << value;
delete value;
return stream;
}

inline std::istream& operator>>(std::istream& stream, const CompanyName::String& rhs)
{
const char* value = String::to_utf8(rhs);
stream >> value;
delete value;
return stream;
}
}

最佳答案

我会说第一步也是最好的一步是删除所有不需要的东西。

考虑 Monoliths Unstrung 的建议: 当类被简化为它们的主要概念时,它们更易于维护和“面向 future ”。

例如:为什么replace()需要是一个成员函数?还是 to/from_utfX() 函数?

关于C++类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564134/

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