类函数与this指针
文章目录
这里需要明白类函数是如何被编译以及如何被执行的。
对于类成员函数而言,并不是一个对象对应一个单独的成员函数体,而是此类的所有对象共用这个成员函数体。当程序被编译之后,此成员函数地址即已确定。我们常说,调用类成员函数时,会将当前对象的this指针传给成员函数。没错,一个类的成员函数体只有一份,而成员函数之所以能把属于此类的各个对象的数据区别开,就在于每次执行类成员函数时,都会把当前对象的this指针(对象首地址)传入成员函数,函数体内所有对类数据成员的访问,都会被转化为this->数据成员的方式。
如果print函数里没有访问对象的任何数据成员,那么此时传进来的对象this指针实际上是没有任何用处的。**这样的函数,其特征与全局函数并没有太大区别。**但如果取消第14行的注释,由于print函数要访问类的数据成员data,而类的数据成员是伴随着对象声明而产生的。但是,我们只new 了一个MyClass,显然,下标T和下标"10000000"的MyClass对象根本不存在,那么对它们的数据成员访问也显然是非法的。
文章作者 Forz
上次更新 2017-09-05