大家好,今天小编关注到一个比较有意思的话题,就是关于c语言 this指针的问题,于是小编就整理了5个相关介绍c语言 this指针的解答,让我们一起看看吧。
C#中this关键字的作用是什么?
this关键字将引用类的当前实例。静态成员函数没有this指针。this关键字可用于从构造函数、实例方法和实例访问器中访问成员。以下是this的常用用途:限定被相似的名称隐藏的成员,例如:publicEmployee(stringname,stringalias){this.name=name;this.alias=alias;}将对象作为传递到其他方法,例如:CalcTax(this);声明索引器,例如:publicthis[intparam]{get{returnarray[param];}set{array[param]=value;}}在静态方法、静态属性访问器或字段声明的变量初始值设定项中引用this是错误的。 参考资料: MSDN
thins指针使用方法
this指针是一个隐含于每一个成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。
2. 当对一个对象调用成员函数时,编译程序先将该对象的地址付给系统创建的this指针,然后调用成员函数。每次成员函数存取数据成员时,都隐含使用this指针。同样也可以的使用*this来标识调用该成员函数的对象。
3. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。
句柄和指针有什么联系吗?
句柄就是个数字,一般和当前系统下的整数的位数一样,比如32bit系统下就是4个字节。这个数字是一个对象的唯一标示,和对象一一对应。这个对象可以是一个块内存,一个***,或者一个服务的context(如 socket,thread)等等。这个数字的来源可以有很多中,只要能保证和它代表的对象保持唯一对应就可以,比如可以用内存地址,也可以用句柄表的序号,或者干脆用一个自增ID,再或者用以上的值去异或一个常数。
传统上操作系统内核和系统服务API都是 C 语言接口的,但是其内部设计理念上又是OO的,所以有对象概念却没有对应的语言语法支持。句柄的作用就是在 C 语言环境下代替 C++ 的对象指针来用的。
创建句柄就是构造,销毁句柄就是析构,用句柄调用函数相当于传入this指针。如果有系统API是 C++ 接口的,那么就没有句柄了,而是某个接口指针,IXXXPtr之类的,比如Windows的com ptr。
为什么在静态成员函数中不能使用base指针?
静态成员函数并不是针对某个类的实例对象,而是属于整个类的,为所有的对象实例所共有。他在作用域的范围内是全局的,独立于类的对象之外的。他只对类内部的静态成员变量做操作。当实例化一个类的对象时候,里面不存在静态成员的。this指针是相当于一个类的实例的指针,this是用来操作对象实例的内容的,既然静态成员函数和变量都是独立于类的实例对象之外的,他就不能用this指针。也不能操作非静态成员。再有你要想想设计静态成员的用意在哪里,就会更加明了了
句柄到底是什么句柄的分类?
句柄就是个数字,一般和当前系统下的整数的位数一样,比如32bit系统下就是4个字节。这个数字是一个对象的唯一标示,和对象一一对应。这个对象可以是一个块内存,一个***,或者一个服务的context(如 socket,thread)等等。这个数字的来源可以有很多中,只要能保证和它代表的对象保持唯一对应就可以,比如可以用内存地址,也可以用句柄表的序号,或者干脆用一个自增ID,再或者用以上的值去异或一个常数。
传统上操作系统内核和系统服务API都是 C 语言接口的,但是其内部设计理念上又是OO的,所以有对象概念却没有对应的语言语法支持。句柄的作用就是在 C 语言环境下代替 C++ 的对象指针来用的。
创建句柄就是构造,销毁句柄就是析构,用句柄调用函数相当于传入this指针。如果有系统API是 C++ 接口的,那么就没有句柄了,而是某个接口指针,IXXXPtr之类的,比如Windows的com ptr。
到此,以上就是小编对于c语言 this指针的问题就介绍到这了,希望介绍关于c语言 this指针的5点解答对大家有用。