详解详解C++中的成员访问运算符和指针到成员运算符中的成员访问运算符和指针到成员运算符
主要介绍了C++中的成员访问运算符和指针到成员运算符,即. 和 ->以及.* 和 ->*的使用方法,需要的朋友可以参考
下
成员访问运算符:成员访问运算符:. 和和 ->
语法
postfix-expression
. name
postfix-expression –> name
备注
成员访问运算符 . 和 -> 用来引用结构、联合和类的成员。成员访问表达式具有选定成员的值和类型。
有两种形式的成员访问表达式:
在第一种形式中,postfix-expression 表示结构、类或联合类型的值,name 为指定的结构、联合或类的成员命名。运算的值
是 name 的值且为左值(如果 postfix-expression 是左值)。
在第二种形式中,postfix-expression 表示指向结构、联合或类的指针,name 为指定的结构、联合或类的成员命名。该值是
name 的值且是左值。 –> 运算符取消引用该指针。因此,表达式 e–>member 和 (*e).member(其中,e 表示指针)会产生相
同的结果(重载运算符 –> 或 * 的情况除外)。
以下示例演示成员访问运算符的两种形式。
// expre_Selection_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
struct Date {
Date(int i, int j, int k) : day(i), month(j), year(k){}
int month;
int day;
int year;
};
int main() {
Date mydate(1,1,1900);
mydate.month = 2;
cout << mydate.month << "/" << mydate.day
<< "/" << mydate.year << endl;
Date *mydate2 = new Date(1,1,2000);
mydate2->month = 2;
cout << mydate2->month << "/" << mydate2->day
<< "/" << mydate2->year << endl;
delete mydate2;
}
这样的话出来的两个值分别为:
2/1/1900
2/1/2000
指针到成员运算符:指针到成员运算符:.* 和和 ->*
语法
expression .* expression
expression –>* expression
备注
指向成员的指针运算符(.* 和 –>*)返回表达式左侧上指定的对象的特定类成员的值。右侧必须指定该类的成员。下面的示例
演示如何使用这些运算符:
// expre_Expressions_with_Pointer_Member_Operators.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class Testpm {
public:
void m_func1() { cout << "m_func1"; }
评论0