C++ this pointer

对于任何一个class,都有一个this pointer可以指代它,它可以指向这个class中的任何member functions,注意不包括friend functions

#include <iostream>
using namespace std;

class Box
{
   double width;
   public:
   Box(double wid):width(wid)
  {
     cout << "object is created" << endl;
  }
   double getwidth()
  {
      return width;
  }
   int comparef(Box box)
   {
     return this->getwidth() > box.getwidth();  // 也可以box.width(不管width作为private还是public,当box作为参数时,都可以用点)
   }
};


int main()
{
   Box box1(12),box2(13);
   if(box1.comparef(box2))                     //this is important
      cout << "box1 is bigger than box2";
   else 
      cout << "box1 is not bigger than box2";
    return 0;
    
   getvalue(box1);
   return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ 中,this 指针是一个隐含于每个非静态成员函数中的指针,它指向调用该函数的对象。 下面是一个示例: ```cpp #include <iostream> class MyClass { public: void printAddress() { std::cout << "Address of this pointer: " << this << std::endl; } }; int main() { MyClass obj1, obj2; obj1.printAddress(); obj2.printAddress(); return 0; } ``` 输出: ``` Address of this pointer: 0x7fff5fbff6b7 Address of this pointer: 0x7fff5fbff6b6 ``` 在上面的示例中,我们定义了一个名为 MyClass 的类,并在其中定义了一个名为 printAddress 的成员函数,该函数输出 this 指针的地址。在 main 函数中,我们创建了两个 MyClass 对象 obj1 和 obj2,并对它们都调用了 printAddress 函数。输出结果显示,这两个对象的 this 指针指向的地址是不同的,这是因为它们是不同的对象。 this 指针的应用非常广泛,其中一个常见的用法是在成员函数中返回对象本身的引用,即 `return *this;`。这在编写链式调用的代码时非常方便,例如: ```cpp class MyClass { public: MyClass& setValue(int value) { this->value = value; return *this; } MyClass& setName(const std::string& name) { this->name = name; return *this; } private: int value; std::string name; }; int main() { MyClass obj; obj.setValue(10).setName("example"); return 0; } ``` 在上面的示例中,我们定义了两个成员函数 setValue 和 setName,它们都返回对象本身的引用,这样我们就可以使用链式调用来设置对象的值。在 main 函数中,我们创建了一个 MyClass 对象 obj,并对它使用了两个成员函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值