对象的常指针和常引用
来源:互联网 发布:编程求出100以内的质数 编辑:程序博客网 时间:2024/05/17 08:36
-----------------siwuxie095
对象的常指针和对象的常引用
看如下实例:
定义一个坐标类:Coordinate
在实现时:
在使用时:
(1)如果使用对象指针和对象引用
(2)如果使用对象的常指针和对象的常引用
因为coor2 是常引用,只具有读权限,而 getX() 的隐藏参数 this,
却要求读写权限的参数,同理,pCoor 是常指针 …
下面是一种更复杂的情况:
这里的const 在 * 和 pCoor 之间,一旦指向了 coor1,就不能再
指向另外的对象了
pCoor 虽然用 const 修饰了,但它的修饰位置却在中间,意味着它
不能再指向其他对象,但它本身所指向的对象的内容却是可变的,即
pCoor 是一个具有读写权限的指针(只限于它指向的对象可以读写)
程序:
Coordinate.h:
class Coordinate
{
public:
Coordinate(int x,int y);
~Coordinate();
void setX(int x);
int getX();
void setY(int y);
int getY();
void printInfo()const;
private:
int m_iX;
int m_iY;
};
Coordinate.cpp:
#include"Coordinate.h"
#include <iostream>
using namespace std;
Coordinate::Coordinate(int x,int y)
{
m_iX = x;
m_iY = y;
cout <<"Coordinate()" << endl;
}
Coordinate::~Coordinate()
{
cout <<"~Coordinate()" << endl;
}
void Coordinate::setX(int x)
{
m_iX = x;
}
int Coordinate::getX()
{
return m_iX;
}
void Coordinate::setY(int y)
{
m_iY = y;
}
int Coordinate::getY()
{
return m_iY;
}
void Coordinate::printInfo()const
{
cout << m_iX <<"," << m_iY << endl;
}
main.cpp:
#include <stdlib.h>
#include"Coordinate.h"
using namespace std;
int main(void)
{
Coordinate coor1(3,5);
Coordinate coor2(7,9);
//对象的常引用只能调用常成员函数
const Coordinate &coor3 = coor1;
//对象的常指针还可以指向其他对象只能调用常成员函数
const Coordinate *pCoor1 = &coor1;
//只能指向coor1不能再指向其他但是可以调用所有的函数(常成员函数和普通成员函数)
Coordinate *const pCoor2 = &coor1;
coor3.printInfo();
pCoor1->printInfo();
pCoor1 = &coor2;
pCoor1->printInfo();
pCoor2->setX(11);
pCoor2->printInfo();
system("pause");
return0;
}
【made by siwuxie095】
- 对象的常指针和常引用
- 7.24常指针 常对象 常引用
- 常指针 和 常引用
- 对象数组,对象指针,常对象、对象的常引用
- 常对象+常对象成员+指向对象的常指针+指向常对象的指针变量+对象的常引用
- 对象的常引用
- 对象的常引用
- C++常成员函数和常对象、对象指针和对象引用
- 常引用、常对象、对象的常成员
- C++程序设计必知:常引用、常对象和对象的常成员
- 二十三、C++程序设计必知:常引用、常对象和对象的常成员
- C++程序设计必知:常引用、常对象和对象的常成员
- 指向常对象的常指针
- 常指针与常引用
- 常指针与常引用
- C++对象的常引用
- 引用,指针,常引用,常指针
- C++中指向对象的常指针和指向常对象的指针
- Redis常用命令
- SpringMVC学习:一、基础概念
- UART基础知识
- GM、VP、FVP、CIO都是什么职位?
- 第九届河南省ACM省赛 D 导弹发射
- 对象的常指针和常引用
- Golang 单元测试和性能测试
- 最详细的Log4j使用教程
- Linux操作系统学习_3
- 51nod1381
- Python模块环境搭建 -- ubuntu
- Codeforces Round #405 Bear and Friendship Condition 并查集
- Tarjan算法详解
- 维纳滤波原理