zoukankan      html  css  js  c++  java
  • const成员函数和const对象

    从成员函数说起

    在说const成员函数之前,先说一下普通成员函数,其实每个成员函数都有一个隐形的入参:T *const this。

    1 int getValue(T *const this) 
    2 {
    3     return val;
    4 }

    const成员函数

    声明形式是:int getValue() const;

    编译器内部实现如下

    1 int getValue(const T* const this) 
    2 { 
    3     return val; 
    4 }

    表示this指针指向的内容是不可改变的,所以当试图修改val时会编译报错。

    const对象

    当一个对象声明成const时,表示指向它的this指针也是const的了,变成const T *this。如果此时调用一个非const成员函数,如int getValue(),而不是int getValue() const,那么相当于把const T*this赋值给T *const this,当然会报错。所以这时候要添加一个const版本的int getValue() const,编译就能通过了。

    1 T *this = const T *this;

    当然普通非const对象调用const成员函数也是可行的,反之不行。

    const成员函数调用非const成员韩函数也是不可行的,相当于把 const T*this赋值给T *this,也会编译报错。

  • 相关阅读:
    ETF上线技术要素
    oracle修改用户的schema
    list
    交易系统分类OMS/EMS
    类的大小2
    webpack5教程
    vue配置stylelint教程
    提高国内访问 GitHub 的速度的 9 种方案
    git常见的操作
    img 图像底部留白的原因以及解决方法
  • 原文地址:https://www.cnblogs.com/howo/p/8476236.html
Copyright © 2011-2022 走看看