我很難以應用程序的方式編寫我的代碼。這是我的默認構造函數:關於編寫代碼的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