C++ 如何在类中编写优化构造函数>;
我写了一个电子邮件类,但我不确定这是否是最好的方式写这个。。。这是它的代码C++ 如何在类中编写优化构造函数>;,c++,class,C++,Class,我写了一个电子邮件类,但我不确定这是否是最好的方式写这个。。。这是它的代码 class email { string value; string domain; string com; string username; string encrypted; bool state ; public: email(const string& val) :value{ val}, state{false},com(),dom
class email
{
string value;
string domain;
string com;
string username;
string encrypted;
bool state ;
public:
email(const string& val)
:value{ val}, state{false},com(),domain(),username(),encrypted()
{
for (int i = 0; i < value.size(); ++i)
{
if (value[i] == '@')
{
username = value.substr(0, i);
for (int j = i; j < value.size(); ++j)
{
if (value[j] == '.')
{
domain = value.substr(i, j);
com = value.substr(j+1, value.size()-1);
state = true;
}
}
}
}
if (state)
{
for (auto letter : value)
{
if (letter == ';' || letter == '\'' || letter == '[' || letter == ']')
{
state = false;
}
}
} else throw "invalid string";
if (state)
{
encrypted = username;
for (int i = 0; i < username.size() / 2; ++i)
{
swap(encrypted[i], encrypted[encrypted.size() - 1 - i]);
encrypted[i] = static_cast<char>(static_cast<int>(encrypted[i]) + 3);
}
}else throw "invalid charecters";
}
const string& get_domain() { return domain; }
const string& get_username() { return username; }
const string& get_com() { return com; }
const string& get_enc() { return encrypted; }
const bool good () const { return state; }
};
class电子邮件
{
字符串值;
字符串域;
字符串com;
字符串用户名;
字符串加密;
布尔州;
公众:
电子邮件(常量字符串和val)
:值{val},状态{false},com(),域(),用户名(),加密()
{
对于(int i=0;i
它还没有完成,这只是我记忆中的一个草图,因为我现在没有实际的代码,我的问题是我是否应该创建另一个类来支持email类。。还是这条路对?我在构造函数中编写了大量代码,这正是我所担心的。如果你完成了你的工作,你可能会破坏for循环。 第一个:找到“@”后,不必循环到结尾
第三个for:在发现错误后,可以立即抛出如果您已经完成了任务,则可以中断for循环。 第一个:找到“@”后,不必循环到结尾
第三个:在发现错误后,可以立即抛出所有这些初始值设定项
com()、domain()、username()、encrypted()
不要做任何有用的事情。成员初始值设定项列表以错误的顺序列出了成员,getter方法应该是const
。我将使用std::string::find
和std::any_of
,而不是在字符串上循环。如果您需要详细查看,请发布。至于你的问题“我应该再上一节课吗”-不,你不应该。相反,您应该清理代码,将用户名、域等移到单独的函数中,不要抛出字符串,将私有数据移到类的底部不要做任何有用的事情。成员初始值设定项列表以错误的顺序列出了成员,getter方法应该是const
。我将使用std::string::find
和std::any_of
,而不是在字符串上循环。如果您需要详细查看,请发布。至于你的问题“我应该再上一节课吗”-不,你不应该。相反,您应该清理代码,将用户名、域等提取代码移动到单独的函数中,不要抛出字符串,将私有数据移动到类的底部。