C++ this 指针

C++ this 指针:

1.this 指针是一个特殊的指针,它指向当前对象的实例。
2.每一个对象都能通过 this 指针来访问自己的地址。
3.this是一个隐藏的指针,可以在类的成员函数中使用,它可以用来指向调用对象。
4.当一个对象的成员函数被调用时,编译器会隐式地传递该对象的地址作为 this 指针。
5.友元函数没有 this 指针,因为友元不是类的成员,只有成员函数才有 this 指针。
6.this 解决名称冲突:在成员函数中,如果成员变量和函数的参数或局部变量有相同的名称,可以通过 this 指针解决命名冲突。

实例1:


#include 
 
class MyClass {
private:
    int value=3;  // 类成员变量
 
public:
    // 给类成员变量赋值
    void setValue(int value)   // 函数的参数 与类成员变量同名
    {
        // 1.使用 this 指针解决名称冲突
        std::cout << "1.setValue:Value= " << this->value<< ", Value=" << value  << std::endl;
        // this->value:第1个value是类成员变量; 第2个value:函数的参数。
        this->value = value;
        std::cout << "2.setValue:Value= " << this->value<< ", Value=" << value  << std::endl;
    }
 
    void printValue()  // 2.使用 this 指针访问类的成员变量
    {
        std::cout << "printValue:Value=" << this->value << ", Value=" << value  << std::endl;
    }
};
 
int main() {
    MyClass obj;
    obj.setValue(10);  // 
    obj.printValue();  
 
    return 0;
}

// 打印结果:
//1.setValue:Value=3, Value=10
//1.setValue:Value=10, Value=10
//printValue:Value=10, Value=10

以上实例中,我们定义了一个名为 MyClass 的类,它有一个私有成员变量 value。
1.类中的 setValue() 函数用于设置 value的 值,而 printValue() 函数用于打印 value 的值。
2.在 setValue() 函数中,我们使用 this 指针来引用当前对象的成员变量 value,并将函数setValue() 传入参数的值赋给它,这样可以明确地告诉编译器我们想要访问当前对象的成员变量,而不是函数参数或局部变量。
3.在 printValue() 函数中,同样使用 this 指针来引用当前对象的成员变量 value,并将其打印。
4.在 main() 函数中,我们创建了一个 MyClass 的对象 obj,然后使用 setValue() 函数设置 value 的值为10,并通过 printValue() 函数打印出来。
5.通过使用 this 指针,我们可以在成员函数中访问当前对象的成员变量,即使它们与函数参数或局部变量同名,这样可以避免命名冲突,并确保我们访问的是正确的变量。

实例2:


#include 
 
class MyClass {
private:
    int value=3;  // 类成员变量
 
public:
    // 给类成员变量赋值
    void setValue(int value)   // 函数的参数 与类成员变量同名
    {
        // 1.不使用 this 指针解决名称冲突
        std::cout << "1.setValue:Value= " << this->value<< ", Value=" << value  << std::endl;
        // value :第1个value是函数的参数;  第2个value:也是函数的参数。 所以是函数的参数给自己赋值。没有给类成员变量,赋值成功。
        value = value; 
        std::cout << "2.setValue:Value= " << this->value<< ", Value=" << value  << std::endl;
    }
 
    void printValue()  // 2.使用 this 指针访问类的成员变量
    {
        std::cout << "printValue:Value=" << this->value << ", Value=" << value  << std::endl;
    }
};
 
int main() {
    MyClass obj;
    obj.setValue(10);  // 
    obj.printValue();  
 
    return 0;
}

// 打印结果:
//1.setValue:Value=3, Value=10
//1.setValue:Value=3, Value=10
//printValue:Value=3, Value=3  没有赋值成功

你可能感兴趣的:(c++,开发语言)