【C++---16】常指针和常引用

 

 

 

Coordinate coor1(3,5); //定义一个普通对象
	const Coordinate &coor2 = coor1; //coor2是对象的常引用
	const Coordinate *pCoor = &coor1; //pCoor是一个指向常对象的指针
	Coordinate const * pCoor2 = &coor1; //pCoor2是一个常指针,指向一个普通对象
	
	//调用常成员函数,都可以
	coor1.printInfo(); //正确,普通对象可以调用常成员函数
	coor2.printInfo(); //正确
	pCoor->printInfo(); //正确
	pCoor2->printInfo(); //正确
	
	//调用普通成员函数
	coor1.getX(); //正确
	coor2.getX(); //错误,常引用只能调用常成员函数
	pCoor->getX(); //错误, 常对象的指针也只能调用常成员函数
	pCoor2->getX();//正确,普通对象的指针什么都能调用
	
	//修改指针指向的位置
	Coordinate coorB(7,9);
	pCoor1 = &coorB //pCoor1指针本身不是常变量,它可以指向别的对象
	pCoor2 = &coorB //pCoor2是一个常指针,不能再指向别的对象
  1. 常对象只能调用常成员函数,不能调用普通成员函数
  2. 普通对象能够调用常成员函数,也能够调用普通成员函数
  3. 常指针和常引用都只能调用对象的常成员函数。
  4. 一个对象可以有多个对象常引用

 

定义一个坐标类,在栈上实例化坐标类常对象,并给出坐标(3,5),然后定义常引用、常指针,最后使用对象、引用、指针分别通过调用信息打印函数打印坐标信息。

打印结果如图

#include <iostream>
using namespace std;
class Coordinate
{
    
public:
	Coordinate(int x, int y)
	{
		// 设置X,Y的坐标
		m_iX=x;
		m_iY=y;
	}
    // 实现常成员函数
	void printInfo() const
	{
	    cout<<"("<<m_iX<<","<<m_iY<<")"<<endl;
	}
public:
	int m_iX;
	int m_iY;
};


int main(void)
{
	const Coordinate coor(3, 5);

	// 创建常指针p
	const Coordinate *p =&coor;
	
    // 创建常引用c
    const Coordinate &c=coor;
	
	coor.printInfo();
	p->printInfo();
	c.printInfo();  
	
	return 0;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值