成员访问运算符:. 和 -> 语法 postfix-expression . name postfix-expression –> name 备注 成员访问运算符 . 和 -> 用来引用结构、联合和类的成员。成员访问表达式具有选定成员的值和类型。 有两种形式的成员访问表达式: 在第一种形式中,postfix-expression 表示结构、类或联合类型的值,name 为指定的结构、联合或类的成员命名。运算的值是 name 的值且为左值(如果 postfix-expression 是左值)。 在第二种形式中,postfix-expression 表示指向结构、联合或类的 在C++编程语言中,成员访问运算符是用于访问类、结构或联合对象成员的关键工具。主要有两种形式:`.`和`->`。 `. (点)`运算符用于访问非指针对象的成员。例如,在`mydate.month = 2;`这行代码中,`mydate`是一个`Date`类型的对象,`.`运算符被用来访问并修改`mydate`的`month`成员。成员访问表达式`mydate.month`返回`month`的值,同时由于`mydate`是一个左值,所以表达式也是左值,这意味着可以对其进行赋值操作。 `-> (箭头)`运算符则用于访问通过指针引用的对象的成员。在`mydate2->month = 2;`这行代码中,`mydate2`是一个指向`Date`对象的指针。`->`运算符首先解引用指针,然后访问`month`成员。因此,`mydate2->month`与`(*mydate2).month`等价,只是`->`更简洁。这个表达式同样返回`month`的值,因为`mydate2`解引用后是左值,所以可以进行赋值。 需要注意的是,当成员运算符`->`应用在重载了`operator->`的类的对象上时,可能会有特殊的行为。这种情况下,`->`可能不再简单地解引用指针,而是执行自定义的操作。 除了成员访问运算符,C++还提供了指针到成员运算符,这使得我们能够通过指针直接访问对象的成员,而不是先解引用指针再访问。有`.*`和`->*`两种形式。 `.*`运算符用于访问非指针对象的成员,但其第一个操作数是一个指向成员的指针。例如,`ATestpm.*pmfn`会调用`ATestpm`对象的`m_func1`成员函数。而`->*`运算符与`.*`类似,但其第一个操作数是指向对象的指针,如`pTestpm->*pmfn`,它同样调用了`pTestpm`所指向对象的`m_func1`成员函数。 在上述代码中,`pmfn`和`pmd`分别是`Testpm`类的成员函数`m_func1`和数据成员`m_num`的指针。使用`.*`和`->*`运算符,我们可以直接通过这些指针来访问成员,无需显式解引用指针。 总结来说,C++中的成员访问运算符`. (点)`和`-> (箭头)`以及指针到成员运算符`.*`和`->*`是访问和操作对象成员的关键手段,它们允许开发者灵活地在不同场景下访问和修改类、结构或联合的内部状态。理解并熟练运用这些运算符对于编写高效、清晰的C++代码至关重要。
- 粉丝: 4
- 资源: 1002
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助