在C++中,Time类通常包含小时、分钟和秒等私有数据成员。为了访问这些数据成员,我们通常会提供公共的成员函数(如getters和setters)来获取或设置它们的值。然而,有时我们可能会不小心返回了私有数据成员的引用或指针,这可能导致意外的行为或安全问题。
class Time
{
private:
int hours;
int minutes;
int seconds;
public:
Time(int h, int m, int s) : hours(h), minutes(m), seconds(s) {}
// 错误的getter函数,返回私有数据成员的引用
int& getHours() { return hours; }
// 错误的getter函数,返回私有数据成员的指针
int* getMinutes() { return &minutes; }
};
在这个例子中,getHours()
和getMinutes()
函数分别返回了私有数据成员hours
和minutes
的引用和指针。
我们应该使用const关键字来确保返回的数据不会被修改,并确保返回的是数据的副本而不是引用或指针。以下是修改后的Time类:
class Time
{
private:
int hours;
int minutes;
int seconds;
public:
Time(int h, int m, int s) : hours(h), minutes(m), seconds(s) {}
// 正确的getter函数,返回私有数据成员的值
int getHours() const { return hours; }
// 正确的getter函数,返回私有数据成员的值
int getMinutes() const { return minutes; }
};