类的成员函数有两种调用方式,一种是由对象调用,另一种是由对象指针调用。其中,对象调用的方式为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(‘ ‘); }