zoukankan      html  css  js  c++  java
  • C++ this 指针

    类的(非静态)成员函数具有一个附加的隐含形参,即指向该类对象的一个指针。这个隐含形参命名为this,与调用成员函数的对象绑定在一起。成员函数不能定义this形参,而是由编译器隐含地定义。成员函数的函数体可以显式使用this指针,但不是必须这么做。如果对类成员的引用没有限定,编译器会将这种引用处理成通过this指针的引用。

    何时使用this指针

    尽管在成员函数内部显式引用this通常是不必要的,但是一种情况下必须这样做:当我们需要将一个对象作为整体引用而不是引用对象的一个成员时。最常见的情况是在这样的函数中使用this:该函数返回对调用该函数的对象的引用

    返回*this

    在单个表达式中调用一些操作时,操作必须返回一个引用,该引用指向执行操作的那个对象。和其他指针一样,可以通过对this指针解引用来访问this指向的对象

    从const成员函数返回*this

    在普通的非const成员函数中,this的类型是一个指向类类型的const指针。可以改变this所指向的值,但不能改变this所保存的地址。在const成员函数中,this的类型是一个指向const类类型对象的const指针。既不能改变this所指向的对象,也不能改变this所保存的地址。

    不能从const成员函数返回指向类对象的普通引用。const成员函数只能返回*this作为一个const引用

    基于const的重载

    基于成员函数是否为const,可以重载一个成员函数。基于一个指针形参是否指向const,可以重载一个函数。const对象只能使用const成员。非const对象可以使用任一成员,但非const版本是一个更好的匹配。

    可变数据成员

    有时我们需要在const函数内修改类成员,可以通过声明为可变数据成员来实现,要将数据成员声明为可变,必须将关键字mutable放在成员声明之前。

  • 相关阅读:
    js弹出DIV层
    .net 生成静态页面
    新开博客
    随机生成验证码
    ASP.NET错误处理方法总结
    webgis
    看樱花
    今天转载的笑话,挺好笑呵
    用Tomcat插件在Eclipse上搭建可跟踪调试的J2EE WEB开发环境
    关于JSTL的简单说明
  • 原文地址:https://www.cnblogs.com/ykzou/p/4983960.html
Copyright © 2011-2022 走看看