gpt4 book ai didi

关于编写代码的 C++ 建议

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

我在按应有的方式编写代码时遇到困难。这是我的默认构造函数:

Address::Address() : m_city(NULL), m_street(NULL), m_buildingNumber(0), m_apartmentNumber(0)
{}

...这是我的另一个构造函数:

Address::Address(const char* city, const char* street, const int buildingNumber,const int apartmentNumber) : m_city(NULL), m_street(NULL)
{
SetAddress(city,street,buildingNumber,apartmentNumber);
}

我必须初始化我的城市和街道字段,因为它们包含 char * 并且我的 setter 使用 remove 来设置新城市。我非常想听听您对如何在不重复代码的情况下以正确的方式编写它的意见。这是我的 SetAddress 代码:

bool Address::SetAddress(const char* city, const char* street, const int buildingNumber, const int apartmentNumber)
{
if (SetCity(city) == false || SetStreet(street) == false || SetBuildingNumber(buildingNumber) == false || SetApartmentNumber(apartmentNumber) == false)
return false;
return true;
}

这是我的 SetCity:

bool Address::SetCity(const char* city)
{
if(city == NULL)
return false;
delete[] m_city;
m_city = new char[strlen(city)+1];
strcpy(m_city, city);
return true;
}

还有 1 个问题,如果我确实将 char* 更改为字符串,我如何检查字符串城市是否不等于 NULL,因为我知道字符串没有“==”运算符并且字符串是一个对象并且不能等于 null,我如何检查我得到的字符串是否确实合法。

最佳答案

您应该使用 std::string 而不是 C 字符串 (const char*)。然后你不必担心有一个“删除”函数,因为 std::string 会为你管理内存。

关于关于编写代码的 C++ 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3621551/

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