关于C++ this指针的作用

有如下两个函数来实现对类中name赋值的作用

 void name(string n)
 {
     name=n;
 }
 void setName(string n)
 {
     this->name=n;
 }

2个回答

当你在调用类中的函数 ,其实你传进来的参数里面,有个this指针,
但是是隐式的,看不到,

在这里用A表示你的类
void name(A * this,string n)
{
name=n; ////name为类的成员函数,隐式调用this中name 成员,其实就是this->name
}
void setName(A * this,string n)
{
this->name=n;////显式调用this中的name成员。
}

这两个函数没太大区别,但是前者隐式调用可能出现命名相同和作用域的方面的冲突。

这个this指针一定程度上解决了命名冲突

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于C++ this指针的作用
有如下两个函数来实现对类中name赋值的作用nn```n void name(string n)n n name=n;n n void setName(string n)n n this->name=n;n n```nn
this指针的作用
//this指针问题 2012年7月18日0:37:13 #include <iostream> using namespace std; class point { public: int x,y; point(int a,int b) { x= a; y = b; } void input(int x,in
【C++】:C++之this指针的作用
C++this指针的作用可以简介为如下。有类成员变量与局部变量冲突了,这时候给类成员变量前面加一个this以加区分比如说如下例子:class CStudent{ private: char *cname; int iage; float fscore; public: void Setname(char *cname){
java中this指针的作用?
一.    1.废话不多说,看代码:   我们定义一个Student类,用来测试,其中,Student中有两个成员变量:StuName(学生姓名),StuNo(学生学号)。 运行结果: 2.当我们把this指针加上。   运行结果: 3.这是什么意思呢? 当我们在一个类中写一个方法时,当传入的参数的参数名与该类的成员变量名相同,并且把参数赋值给与之同
Java this指针作用
Java this 介绍:调用类方法的对象,作为隐藏参数传入,即this,类成员在编译期由JVM自动加上this.前缀 作用: [1] 类对象共享一份方法:方法通过传入的this调用对应对象的成员变量,or成员方法 [2] 同名变量识别:类成员变量使用this调用,方法中可传入同名参数 [3] this调用构造方法 #说明:静态成员无this,静态成员类对象共享,类似于方法,而this实质是一...
还是问this指针的作用
上次提这个问题的时候就没搞懂rn看深入浅出的时候frame1就不懂了,可能是基础问题rn请教各位了:rn里面将this指针的值赋给本身的一个指针变量m_......什么东西的rn然后将这个指针变量又赋给一个函数,成为其返回值,然后在主函数中调用rn我就不知道它到底指向什么了?rn他有三个类,一个又一个的派生,到最后到底指谁了?各位一定都看过这本书,所以说的不rn太详细,请大家指教!
C ++的this指针
C++的this指针
求助 this指针在类中的作用?
this指针在类中的作用?用类创建对象,每个对象都有一个存储空间吗?其中存放的是类中定义变量和方法的拷贝吗?
关于this指针
大家好,请看以下代码:rn[code=c]rn#includernusing namespace std;rnrnclass Test;rnrnclass Refrnrnpublic:rn Ref(Test* Atest): test(Atest)rn Test*& test;rn;rnrnclass Testrnrnpublic:rn Test()rn rn cout << "create Test" << endl;rn rn Ref* GetRef()rn rn Ref* ref = new Ref(this);rn return ref;rn rn;rnrnint main()rnrn Test* p = new Test();rn Ref* ref = p->GetRef();rn delete p;rn p = NULL;rn cout << "result:" << ref->test << endl;rn return 0;rnrnrn[/code]rnrn请问为什么ref->test输出的不是NULL?ref->test不是指向了p吗?谢谢大家!
关于THIS指针!
client dc(this);rn我知道THIS是自引用指针,可是定义一个对象为什么要指针呢?rn小弟很菜,请多指教!
关于this指针?
各位老大,this 指针可以有这样的吗?rnif(this==other)rn其中other不是指针类型也不是地址可以吗?rn如果other 是引用可以吗?rn谢谢rn如果可以的话,请举出this 的用法,如果不可以,为什么很多书上有这样的表达。
关于this指针!!
为什么在const成员函数中,this指针是指向const类型的指针???rn大家能解释一下吗?
关于this指针:
各位高手:rn 在程序中,由于虚拟函数的存在,使得调用虚拟函数的时候可以不注明所在的对象,即直接写函数名(参数表)即可;但是,在调用虚拟函数时,应该有this函数指针在起作用,当this指针指向那个对象时,即调用该对象的虚拟函数(如果没找到,即从父类中找该虚拟函数,直至找到为止)。但是,在windows程序里,我不知道什么使this指针指向不同的对象,从而调用不同对象的各个虚拟函数?rn 是否this指针一直保持不变呢?
c语言技术this指针
c语言指针的用法详细解析,是一片很好的文档,很值得一看,吐血推荐
C/C++静态类和this指针
1、静态类C++的静态成员不仅可以通过对象来访问,还可以直接通过类名来访问。class CBook{ public: static double price;//需要通过类外来进行初始化 }int main(void){ CBook book; book.price;//通过对象来访问 CBook::price//通过类名来访问 return 0; }静态成员变量
C/C++——this指针
本文主要给读者介绍一下this指针,理解this指针能更方便的开发程序,特别是在面向对象的可视化编程中,如MFC。用好this指针能在程序开发中起到事半功倍的效果。
C\C++——this指针
class Test { public: Test(int a,int b)//Test(Test *const this,int a,int b) { this-&gt;a = a; this-&gt;b = b; } void Print()//void Print(Test *const this) { ...
C语言关于回调函数和this指针探讨
http://www.codeceo.com/article/c-callback-and-pointer.html?ref=myread
C++中this指针的作用以及用法详解
为什么引用this指针? 当我们在类中定义了一个变量,同时又在类成员函数中定义了同一个变量时,也就是变量名重复时,但是我们要想使用类中的定义的变量,此时就需要this指针了。 1.this指针的作用 指针存在于类的成员函数中,指向被调用函数类实例的地址。  一个对象的this指针并不是对象本身的一部分,不会影响sizeof()的结果。 this指针的作用域是在类内部,当在类的非静态成员函
有人能说一下this指针的作用和用法吗?
虽然看了教材但还是有点不大明白,有人能举例说明一下吗?
在VC中this指针起什么作用?
-
关于this指针和闭包
阮一峰老师讲技术真的是言简意赅。 this指针,http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html 闭包,http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html 在闭包讲解的最后抛出了这么一个问题,
关于c++中的this指针
记忆中,初识c++中的this指针的时候,根本不知道它是什么,有什么作用。 再识,就知道了它的作用,也掌握了它背后的东西。 this指针,就是一个指向当前对象的指针。我们知道,定义出一个类,它在内存中是不占 空间的,只有定义了该类类型的对象时,系统就会为该对象分配一段存储空间,这段空间 里只存储成员变量,对于成员函数,是存放在代码区的。(复习:内存分为5大区:静态 区、常量区、栈
关于this指针的问题
在CADOOperation类定义函数BOOL CADOOperation::ShowADOView(CString fields[], int len, CADOView *view)rn然后在另一个类CRecordSearchDlg中调用这个函数: rn CADOOperation emp; rn emp.ShowADOView(str, 11, this);rn结果报错:cannot convert parameter 3 from 'class CRecordSearchDlg *const ' to 'class CADOView *'rnrn这个问题怎么解决?请高手指点。。。
关于this指针土问题!
以下假设这些代码都是正确的,请问一下这个this指针的指向的对象:rnm_pmainWnd=new CMyFrameWnd;rnCMyFramewnd::CMyFrameWnd()//this指针是指向CMyFrameWnd对象的rn rncreate(); //引发父类CFrameWnd::Create()rnrnBOOL CFrameWnd::Create()//这个的this指针是指向谁的?rnrn CreateEx();//引发父类的Cwnd::CreatEx()rnrnBOOL CWnd::CreateEx()//这个的this指针是指向谁的?rnrn CView:;xxxx();rnrnrnrnvoid CView:;xxxx()//这个的this指针是指向谁的?rnrnrn解释最好详细点哦,呵呵,我菜啊!rn
一个关于this指针的问题
有如下代码:rn#include rnrnclass basernrnpublic:rn void basefun()rn rn this->fun2();rn rn void fun2()rn rn cout<<"base"<
关于this指针的疑问
[code=c]rnClock &Clock::operator++ ()rnrn second++;rn if (second >= 60)rn rn second -= 60;rn minute++;rn if (minute >= 60)rn rn minute -= 60;rn hour = (hour + 1) % 24;rn rn rn return *this;rnrn[/code]rnClock &Clock::operator++ ()这一句定义了重载成员函数的返回值是Clock类的指针rn然后*this不是对象本身吗?rn另外rn[code=c]rnClock Clock::operator++ (int)rnrn Clock old = *this;rn ++ (*this);rn return old;rnrn[/code]rn这一段里面新建立了个Clock对象old,然后这里的*this就不明白是指向的哪个对象了rn而且Clock old = *this;之后调用前置++重载成员函数自增最后返回old对象是什么意思,old的值不是没有改变吗?rn求大神指教啊
关于THIS指针的问题,
问下THIS 指针的是怎么回事啊rn谢谢~!~!!~rn另NEW和MALLOC到底有什么区别撒`1?
也问关于this指针
粗看了前篇"关于this指针的深入探讨"关于this的讨论,我的问题可能更简单和"工程化"一点rn题目有点不准确,我想在大多数情况下,把"this 指针"叫作"this 参数"可能更合适一点rnrn问题:rn1.this作为类方法的一个隐含参数,是如何入栈的(比如是作为最左的参数还是最右的)或是存放在固定的寄存器中rn2.问题1跟调用惯例有关吗?rnrn例如:rn1.我希望windows的回调函数不是一个普通的函数而是一个同样原型的类方法,如何写一个调用通道把对象的地址作为this参数插进去(如果不是windows而是其它gui呢?)rn2.假定PMethod是一个指向某Class1::Method(int val)方法的指针,class1是一个指向Class1对象的指针,如何通过class1和PMethod来达到调用class1->Method(anyInt)的目的(注意:调用者可能不知道Method的名子,而只有PMethod指针),是不是用类似于push class1; PMethod(anyInt);的代码就可以做到?
关于this指针的深入探讨
任何一个对象都是指向自身的this指针.我想深入了解一下this指针.rnrn1:this指针是什么时候创建的?rn构造对象前,构造对象后,还是其他?rn2:this指针存放在何处?rn堆,栈,全局变量,还是其他?rn3:this指针如何传递给类中函数的?rn绑定?还是在函数参数的首参数就是this指针.那么rnthis指针又是如何找到类实例后函数的?rn4:this指针如何访问类中变量的/?rn5:我们只有获得一个对象后,才能通过对象使用this指针,如果我们知道一个对象this指针的rn位置可以直接使用吗?rn6:每个类编译后,是否创建一个类中函数表保存函数指针,以便用来调用函数?rn7:这些编译器如何做到的?rn8:能否模拟实现?
关于Java多态和This指针
先贴源码rnrnpublic class ThisTest public static void main(String[] augs) Son son1 = new Son("son1"); Son son2 = new Son("son2"); System.out.println("son1.name: "+son1.name); System.out.println("son1.getName(): "+son1.getName()); System.out.println(son1.equals(son2)); class Father public String getName() System.out.println("This in getName: "+this.getClass()); return "Pring name field in "+this.getClass()+": "+this.name; public boolean equals(Object otherObject) System.out.println("This in equals: "+this.getClass()); if (this == otherObject) return true; if (otherObject == null) return false; if (this.getClass() != otherObject.getClass()) return false; Father other = (Father)otherObject; return this.name.equals(other.name); public String name="father"; class Son extends Father public Son(String s) name=s; public String name;
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法