能否给个有this关键字的例子?

Mingci_c 2009-07-06 10:14:35
今天又学了新的知识 this 但老师讲的还是半懂不懂的,有点明白有点不明白。大家能不能举个有this关键字的例子给我看一下啊``?
...全文
22 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
The_facE 2009-07-07
  • 打赏
  • 举报
回复
this指针就是为了方便在类的方法里面取得对象自己的地址。是不是很绕?

说个例子吧。

你写一个类A,那就要写几个函数嘛。在一个函数里面,你需要类A的对象的地址这个数据,怎么取?这个对象现在还没建立呢。没关系,现在有this指针来解决,this指针就是这个对象的地址。好了,现在问题解决了。

例子:我很懒,就写一个函数好了。假如A里面有一个叫做m_nHeight的成员表示高度,而我们需要一个函数取得两个对象谁更高。

const A & A::GetHigher( const A & a ) const
{
if ( m_nHeight < a.m_nHeight )
{
return a;
}
else
{
return *this; // 如果没有this,这里玩不转了。
}
}
c_fresher 2009-07-07
  • 打赏
  • 举报
回复
一个类的对象就相当于站在地球上的你,你能看到这个类的成员变量和函数就相当与你能看到地球上和你并列的山啊水啊人啊,但是你看不到整个地球,this就是给你个看到地球的机会呵呵
Fleeboy 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liao05050075 的回复:]
C/C++ code
#1 #include <iostream.h>
#2 #include <stdlib.h>
#3
#4 class ca
#5 {
#6 int a;
#7 public:
#8 ca(int a)
#9 {
#10 this->a=a;//这里this->a就可以引用到对象里面的那个a
#11 // this就是当前ca对象的指针,this->a就是第6行的a
#12 // this->a=a;中最右边的那个a就是第8行的a
#13 }
#14};

void main()
{
ca a(1);
}
[/Quote]
Walf_ghoul 2009-07-06
  • 打赏
  • 举报
回复
这是将this指针赋值给静态变量的例子:

#include <iostream>
using namespace std;

class A
{

public:
int b;
static A* pointer;
A(int i):b(i){};
void ToThis()
{
pointer = this; //使得pointer指向类的本身。。。
}

};

A* A::pointer = new A(6);

int main()
{
A temp = A(8);
temp.ToThis();
cout<<A::pointer->b;
return 0;
}

点墨 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 joanlynnlove 的回复:]
this 是指向类的对象本身的一个指针,是隐含的和不能修改的。
[/Quote]
顶。
大前置 2009-07-06
  • 打赏
  • 举报
回复
#include<iostream.h>
  class Point
  {
  int x, y;
  public:
  Point(int a, int b) { x=a; y=b;}
  void MovePoint( int a, int b){ x+=a; y+=b;}
  void print(){ cout<<"x="<<x<<"y="<<y<<endl;}
  };
  void main( )
  {
  Point point1( 10,10);
  point1.MovePoint(2,2);
  point1.print( );
  }
  当对象point1调用MovePoint(2,2)函数时,即将point1对象的地址传递给了this指针。
  MovePoint函数的原型应该是 void MovePoint( Point *this, int a, int b);第一个参数是指向该类对象的一个指针,我们在定义成员函数时没看见是因为这个参数在类中是隐含的。这样point1的地址传递给了this,所以在MovePoint函数中便显式的写成:
  void MovePoint(int a, int b) { this->x +=a; this-> y+= b;}
大前置 2009-07-06
  • 打赏
  • 举报
回复
this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行
acdbxzyw 2009-07-06
  • 打赏
  • 举报
回复
this 是指向类的对象本身的一个指针,是隐含的和不能修改的。
liao05050075 2009-07-06
  • 打赏
  • 举报
回复

#include <iostream.h>
#include <stdlib.h>

class ca
{
int a;
public:
ca(int a)
{
this->a=a;//这里this->a就可以引用到对象里面的那个a
}
};

void main()
{
ca a(1);
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧