用于公开字段的Const引用

时间:2013-02-06 00:52:52

标签: c++ const-reference

我有一个课程日期。让日期为:

class Date
{
private:
    unsigned int _day;
    unsigned int _month;
    unsigned int _year;
public:
    const unsigned int& Day;
    const unsigned int& Month;
    const unsigned int& Year;

    Date() : Day(_day), Month(_month), Year(_year)
    {  }
}

出于某种原因,在构造函数被调用之后,Day,Month和Year不会指向/引用_day,_month和_year。

我的一个猜测是,在将内存分配给类之前它们已被设置,我将如何解决此问题(也就是在内存分配后设置引用)?

提前致谢!

编辑:更多信息

当我获得Day的值时,不会返回_day(例如)的值。我得到一个看似随机的数字。

3 个答案:

答案 0 :(得分:4)

目标还不是很清楚。在您的Date类中,您可以直接访问_date, _month, _year为什么要设置另一个引用?

但要回答你的问题

  

当我获得Day的值时,不会返回_day(例如)的值。我得到一个看似随机的数字

实际上,值正在返回,但是你得到了垃圾,因为_day,_month和_year只是未初始化的整数。您需要首先在初始化列表中初始化它们:

Date() : _day(0), _month(1), _year(2), Day(_day), Month(_month), Year(_year)

答案 1 :(得分:1)

您应该使用返回const引用的getter公开它们以避免必须存储它们,这样更方便。

class Date {
private:
    unsigned int _day;
    unsigned int _month;
    unsigned int _year;

public:
    const unsigned int& Day(){return _day;}
    const unsigned int& Month(){return _month;}
    const unsigned int& Year(){return _year;}
}

答案 2 :(得分:0)

Date::Date(unsigned int myDay, unsigned int myMonth, unsigned int myYear)
{
    //Assign values here in constructor.
}

您可以编写单独的方法来返回课程中的日,月或年,或者您在设计文档中计划的任何不同日期格式的任意组合。