Date::Date(); // 錯誤:定義時多了分號,視為聲明而非定義
{ month=1; day=1; year=2005; }
構造函數定義不應有分號,正確寫法:
Date::Date() { // 無分號
month=1; day=1; year=2005;
}
#include <iostream>
#include <string>
using namespace std;
class Date {
public:
Date(int m, int d, int y);
Date(int m, int d);
Date(int m);
Date(); // 聲明
void display() const; // 建議加 const
private:
int month, day, year;
};
// 使用初始化列表(高效、必須用於 const/引用成員)
Date::Date(int m, int d, int y) : month(m), day(d), year(y) {}
Date::Date(int m, int d) : month(m), day(d), year(2005) {}
Date::Date(int m) : month(m), day(1), year(2005) {}
Date::Date() : month(1), day(1), year(2005) {} // 修正:去掉分號
void Date::display() const {
cout << month << "/" << day << "/" << year << endl;
}
int main() {
Date d1(10,13,2005), d2(12,30), d3(10), d4;
d1.display(); d2.display(); d3.display(); d4.display();
return 0;
}