You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何在类中使用*this._height访问成员变量会报错?

问题解答:为什么*this._height报错而this->_height正常?

核心问题出在运算符优先级上:

  • .(成员访问符)的优先级比*(解引用符)更高,所以编译器会把*this._height优先解析成 *(this._height)。
  • 但this是指针类型,指针只能用->访问成员,不能用.,所以this._height本身就是非法写法,自然整个表达式触发报错。

如果想用*this配合.访问成员,必须给*this加括号,写成(*this)._height——这样编译器会先解引用this得到当前对象,再用.访问私有成员_height,这和this->_height是完全等价的写法。

举个代码示例:

class cube {
private:
    int _height;
public:
    void set_height(int h) {
        this->_height = h; // 合法
        (*this)._height = h; // 合法,和上面效果一致
        // *this._height = h; // 非法,优先级导致解析错误
    }
};

内容的提问来源于stack exchange,提问作者Xiao ZHANG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:15:44