C++ 解引用运算符

C++ 解引用运算符

在这里插入图片描述

在C++编程中,指针是一种非常重要的数据类型,它可以指向内存中的地址,让程序可以访问到变量或对象。指针的解引用运算符(*)是一个常见的操作符,在操作指针时非常常用。除此之外,C++中还有三种指向成员的指针,分别是::*.*->*。本文将对这三种指针进行介绍,并提供相应的例子。

  1. ::*

::*是指向成员声明符的指针,可以用来绑定对象和成员函数。下面是一个示例代码:

class Rectangle {
public:
    double w_, h_;
    Rectangle(double w, double h) : w_(w), h_(h) {}
    double area() { return w_ * h_; }
};

int main() {
    Rectangle r{2.1, 3.2};
    double Rectangle::* w = &Rectangle::w_;
    r.*w = 2.2;
    std::cout << r.w_ << std::endl;
};

在这个例子中,我们定义了一个名为Rectangle的类,其中包含了成员变量w_和h_,以及一个计算面积的成员函数area()。在主函数中,我们创建了一个Rectangle对象r,并通过指向成员声明符的指针w绑定了成员变量w_。然后,我们使用解引用运算符.*来访问对象的成员变量,并修改了它的值为2.2。最后,我们输出了修改后的w_的值,结果为2.2。

  1. .*

.*是指向对象成员的指针,可以用来访问类对象的非静态成员。下面是一个示例代码:

class Rectangle {
public:
    double w_, h_;
    Rectangle(double w, double h) : w_(w), h_(h) {}
    double area() { return w_ * h_; }
};

int main() {
    Rectangle r{2.1, 3.2};
    double Rectangle::* w = &Rectangle::w_;
    r.*w = 2.2;
    Rectangle* pr = &r;
    std::cout << pr->*w << std::endl;
};

在这个例子中,我们定义了一个名为Rectangle的类,其中包含了成员变量w_和h_,以及一个计算面积的成员函数area()。在主函数中,我们创建了一个Rectangle对象r,并通过指向成员声明符的指针w绑定了成员变量w_。然后,我们创建了一个指向Rectangle对象的指针pr,并使用解引用运算符->来访问对象的成员变量w_,并输出了它的值,结果为2.2。

  1. ->*

->*是指向指针对象成员的指针,可以用来访问指针对象的成员变量。下面是一个示例代码:

class Rectangle {
public:
    double w_, h_;
    Rectangle(double w, double h) : w_(w), h_(h) {}
    double area() { return w_ * h_; }
};

int main() {
    Rectangle r{2.1, 3.2};
    double Rectangle::* w = &Rectangle::w_;
    Rectangle* pr = &r;
    std::cout << pr->*w << std::endl;
};

在这个例子中,我们定义了一个名为Rectangle的类,其中包含了成员变量w_和h_,以及一个计算面积的成员函数area()。在主函数中,我们创建了一个Rectangle对象r,并通过指向成员声明符的指针w绑定了成员变量w_。然后,我们创建了一个指向Rectangle对象的指针pr,并使用解引用运算符->*来访问指针对象的成员变量w_,并输出了它的值,结果为2.1

结论:

在C++编程中,指针是一种非常重要的数据类型,指向成员的指针更是让程序员可以更加灵活地访问类的成员变量和成员函数。Pointer to member declarator(::*)pointer to member of object(.* )pointer to member of pointer(->*)三种指向成员的指针,扩展了指针的应用范围,可以帮助程序员更加方便地访问类的成员变量和成员函数,提高了程序的灵活性和可读性。

需要注意的是,这三种指针的使用,需要理解成员指针的概念,即指向类成员的指针,而不是类对象的指针。同时,这些指针也需要配合类的访问权限来使用,如果成员变量或成员函数是私有的,那么就需要在类的公有成员函数中使用这些指针。

除了这三种指向成员的指针之外,C++中还有其他的指针类型,如智能指针等,可以帮助程序员更好地管理内存和提高程序的安全性。因此,在编程过程中,需要根据实际情况选择合适的指针类型,以达到最优的效果。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值