常量指针—this指针
this指针:成员函数一般都会拥有一个常量指针(this),指向调用函数的对象,储存的是改对象的首地址(注意:静态成员函数是没有this指针的)
//标准写法 class book { public: book(){this->price = 0.0; this->title = NULL;} private: double price; char * title; };
//常用写法(省略this) class book { public: book(){price = 0.0; title = NULL;} private: double price; char * title; }; //两种写法收拾正确的
通常我们在设计成员函数时会将形参与成员变量设计成同一个名字,如下所示,此时函数定义的时候price = price;
这样的程序看起来总是有些别扭的。这个使用如果使用 this 指针则就能很明朗的进行区分两个 price 了。
class book { public: void setprice(double price) { this->price = price; } private: double price; char * title; };
利用 this->price 表明前面一个 price 为类中的成员变量,而后面一个 price 为形参中的 price。this 指针在此时避免命名冲突产生理解上的歧义。
this 指针是常量指针,它的值是不能被修改的,一切企图修改该指针的操作如赋值、递增、递减等都是不允许的。
此外 this 指针只非 static 成员函数中才是有效的,因为static成员函数是属于类的公有资源没有this指针
/** * this指针: * C++ 中数据和方法是分开存储的,数据独有,方法共有 * 数据存储在对象中;方法是定义在类中(存放在代码区),所有对象所共有 * * 当一个对象,调用方法时候,会在此方法中产生一个this指针(默认隐藏)
* (this指针主要是为成员变量服务) * this指针指向调用方法的对象(指向对象,对应的也就是指向对象所有的成员变量) * * 注意: * 1、this指针是隐含在对象成员函数内的一种指针 * 2、成员函数通过this指针,就可以确定指向操作对应对象的数据 * 3、static静态成员函数内部没有this指针(只有私有的函数才会生成this指针) * * 应用: * this -> price = price; // this指针主要是为对象的成员变量服务 * 左边-this指针表示当前对象的成员变量,右边就是形参传入的变量 */ #include<iostream> using namespace std; class Mycount { public: Mycount& mycount(const char *str) { cout << "str = " << str << endl; return *this; //*this代表的就是当前调用函数的对象 // 相当于 obc.mycount() == obc } private: }; int main() { Mycount obc; obc.mycount("this").mycount("is").mycount("point!"); return 0; }
标签:函数,title,对象,price,C++,指针,成员,14 From: https://www.cnblogs.com/zlxxc/p/17811499.html