3_使用指针对象(Using Object Pointer)

  类的成员函数有两种调用方式,一种是由对象调用,另一种是由对象指针调用。其中,对象调用的方式为objectName.memberFunctionName(parameters),而对象指针调用的方式为objectPointer->memberFunctionName(parameters)。

  对象指针调用objectPointer->memberFunctionName(parameters)等价于先将对象指针解引用,然后使用对象调用的方式调用成员函数。即(*objectPointer).memberFunctionName(parameters),其中objectPointer为对象指针。

  以上,要注意的是操作符的优先级:如果对象指针的间接访问操作不加括号,会陷阱行点操作运算,从而导致编译失败,因为指针进行点操作是非法的。

//=============================================
//对象指针使用成员函数
//=============================================

#include <iostream>
#include <iomanip>
using namespace std;

/**
*类定义体
*/
class Date{
private:
    int year,month,day;
public:
    //在类定义体内定义成员函数,不需要在函数名前冠以类名
    void set(int y,int m,int d)
    {
        year = y;
        month = m;
        day = d;
    };
    bool isLeapYear();
    void print();
};


//使用日期类
int main()
{
    Date* dp = new Date;
    dp->set(2018,2,6);
    if((*dp).isLeapYear())
    {
        dp->print();
    }
    return 0;
}

//成员函数类定义体外定义

inline bool Date::isLeapYear() //显示内联
{
    return (year%4==0 && year%100!=0)||(year%400==0);
}

void Date::print()
{
    cout<<setfill('0');
    cout<<setw(4)<<year<<'-'<<setw(2)<<month<<'-'<<setw(2)<<day<<'\n';
    cout<<setfill(' ');
}

 

posted @ 2018-02-06 17:12  HOU_JUN  阅读(908)  评论(0编辑  收藏  举报