先前,我们讨论了C ++中的类成员访问运算符,该运算符用于访问类的公共成员。
要访问类的公共成员,我们使用object_name.member_name。
如果您有一个指向对象的指针并想要访问类成员,则可以通过使用两个运算符Asterisk(*)和Dot(。)运算符的组合来访问它们。
语法:
(*object_pointer_name).member_name;
考虑给定的类声明
class sample { private: int a; public: int b; void init(int a) {this->a = a;} void display() {cout<<"a: "<<a<<endl;} };
考虑到main()
,这里我们使用*和的组合访问成员函数。运算符:
int main(){ //指向对象声明的指针 sample *sam = new sample(); //赋值给a和back- (*sam).init(100); (*sam).b=200; //打印值 (*sam).display(); cout<<"b: "<<(*sam).b<<endl; return 0; }
我们可以使用Arrow运算符(->)来访问类成员,而不是使用两个运算符Asterisk(*)和Dot(。)运算符的组合,Arrow运算符在C ++编程语言中也称为“类成员访问运算符”。
语法:
object_pointer_name -> member_name;
考虑到main()
,这里我们使用Arrow Operator访问成员
int main(){ //指向对象声明的指针 sample *sam = new sample(); //赋值给a和back- sam->init(100); sam->b=200; //打印值 sam->display(); cout<<"b: "<<sam->b<<endl; return 0; }
这是完整的程序
#include <iostream> using namespace std; class sample { private: int a; public: int b; void init(int a) {this->a = a;} void display() {cout<<"a: "<<a<<endl;} }; int main(){ //指向对象声明的指针 sample *sam = new sample(); cout<<"Using * and . Operators\n"; //赋值给a和back- (*sam).init(100); (*sam).b=200; //打印值 (*sam).display(); cout<<"b: "<<(*sam).b<<endl; cout<<"Using Arrow Operator (->)\n"; //赋值给a和back- sam->init(100); sam->b=200; //打印值 sam->display(); cout<<"b: "<<sam->b<<endl; return 0; }
输出结果
Using * and . Operators a: 100 b: 200 Using Arrow Operator (->) a: 100 b: 200