《面向对象程序设计 C++》指向对象的指针

本文深入解析了C++中的成员选择运算符(.)和指针操作符(->)的使用场景与区别,展示了如何通过对象、对象引用及指针访问类成员,同时介绍了this指针的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

成员选择运算符.

class C{
public:
	void m(){ /*...*/ }
};
void f( C& );
int main(){
	C c1;
	c1.m(); // object
	f(c1);
}
void f( C& c){
	c.m(); //object reference
}

本例展示了对象c1和对象引用c使用成员选择操作符的语法,成员选择运算符只能用于对象对象引用。而要通过指针来访问成员,必须使用指针操作符->

指针操作符->

class C
{
public:
    void m(){ /*...*/}
};
void f(C*);
int main()
{
    C c1; 
    c1.m();  //object
    f( &c1 ); //address of object
    return 0;
}
void f(C* p)
{
    p->m(); // pointer to C object
}

在本例中,将一个指向对象c1的指针传递给函数f,而不是传递其引用。所以在f中,指针p对m的访问用指针操作符->,由于f得到的是一个指向c1的指针而不是c1的引用,所以指针不能用成员选择符来调用m.

在C++中,指向对象的指针主要用于两个方面:

  • 1 指向对象的指针可以作为参数传递给函数,或通过函数返回
  • 2 使用操作符new和new[]动态创建对象,然后返回一个指向该对象的指针。

总结

  • 成员选择操作符.专门用于对象和对象引用
  • 指针操作符->专用于对象指针

常量指针this

在成员函数内部可以用指针常量this来访问与成员函数的调用相关联的对象(this是一个关键字)。

class C
{
public:
    C() { x=0; }
private:
    int x;
};
int main()
{
	C c1;
}

本例中,构造函数将私有数据成员x初始化为0,用this可以这么改:

class C
{
public:
    C() { this->x=0; }
private:
    int x;
};
int main()
{
	C c1;
}

this指向对象c1,即this的值为&c1.

this指针还可以这么用,类的公有成员函数经常会访问私有数据成员,如:

class C
{
public:
    C() { id=0; }
    void set(const int& ID) { id = ID;}
private:
    int id;
};

本例中,用大写字母ID作为参数,来避免与成员变量名id发生冲突,而如果就想用id作为参数,这时可以使用this指向成员变量id:

class C
{
public:
    C() { id=0; }
    void set(const int& id) { this -> id = id;}
private:
    int id;
};

this指针是一个常量,它不能作为赋值、递增、递减等运算的目标对象,并且,this只在非static成员函数中才有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值