background image

果所有的成员函数都在类体内定义,则实现部分可以省略。

    下面给出一个日期类定义的例子:

    class TDate
    {

        public:
        void SetDate(int y, int m, int d);

        int IsLeapYear();
        void Print();

        private:
        int year, month, day;

    };

    //类的实现部分
    void TDate::SetDate(int y, int m, int d)

    {
        year = y;

        month = m;
        day = d;

    }

    int TDate::IsLeapYear()
    {

        return(year%4==0 && year%100!=0) || (year%400==0);
    }

    void TDate::Print();

    {
        cout<<year<<"."<<month<<"."<<day<<endl;

    }

    这里出现的作用域运算符::是用来标识某个成员函数是属于哪个类的。

    该类的定义还可以如下所示:

    class TDate
    {

        public:
            void SetDate(int y, int m, int d)

            {year=y; month=m; day=d;}

            int IsLeapYear()
            {return(year%4==0 && year%100!=0) || (year%400==0);}

            void Print()

            {cout<<year<<"."<<month<<"."<<day<<endl;}

        private:
            int yeay, month, day;

    }

    这样对成员函数的实现(即函数的定义)都写在了类体内,因此类的实现部分被

省略了。如果成员函数定义在类体外,则在函数头的前面要加上该函数所属类的标

识,这时使用作用域运算符::。

    定义类时应注意的事项