C++_14_常量指针—this指针 - 重写版

发布时间 2023-11-05 23:21:50作者: 尘落曦枫

常量指针—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; }