我很难以应用程序的方式编写我的代码。这是我的默认构造函数:关于编写代码的C++建议
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 *
和我的二传手使用删除设置以新城市为例。我非常希望听到您的意见,就如何以正确的方式编写代码而不必重复代码。 这是我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我知道字符串没有“==”运算符和字符串是一个对象,不能等于空, 我怎么能检查我得到的字符串是否确实是legeal。
为什么const char *而不是const std :: string的引用? – 2010-09-01 19:45:29
您正在对您的代码进行微操作,而不是对其进行管理:您正在编写太多的底层代码来处理'char *',其中正常的C++ STL对象会比您希望处理的更好地处理它的大小...... – paercebal 2010-09-01 20:32:36
从资源管理中分离资源使用情况。 – GManNickG 2010-09-01 20:48:25