常对象与常成员函数的关系
来源:互联网 发布:apache服务器安装教程 编辑:程序博客网 时间:2024/04/28 06:58
(1) 常对象
用const修饰的对象叫对象常量,其格式如下:
〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉
声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。
例:分析下列错误的地方,说明理由;
#include<iostream.h>
class Point
{ int x, y;
public:
Point(int a, int b) { x=a; y=b;}
Void MovePoint( int a, int b){ x+=a; y+=b;}
Void print(){ cout<<"x="<<x<<"y="<<y<<endl;}
};
void main( )
{
const Point point1( 10,10);//常量对象
point1.MovePoint(2,2);//常对象point1的数据不能被更改,所以错误
point1.print( );//print函数的this指针不能指向常对象
}
错误原因在旁边已经注释。
常对象常被用在对象的引用上。所谓常引用是指说明引用时用const修饰。常引用所引用的对象不能被更新,一般用做形参。其格式:
const 〈类型说明〉&〈引用名〉
例:根据例题5-11的类给出程序的执行结果:
#include<math.h>
int length(const Point &p1, const Point &p2)
{ int l;
l=sqrt((p1.x -p2.x)* (p1.x -p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
return l;
}
void main( )
{
Point a(1,1),b(4,5);
Cout<<"两点的距离是:"<<length( a, b)<<endl;
}
本程序的输出:
两点的距离是:5
(2)常成员函数
用const关键词说明的函数叫常成员函数。其格式如下:
常成员函数的作用和功能:
常成员函数不能更新对象的数据,也不能调用非const修饰的成员函数。常对象只能调用类的常成员函数以及类的静态成员函数。
例:给出下列程序的执行结果:
#include<iostream.h>
class Point
{ int x, y;
public:
Point(int a, int b) { x=a; y=b;}
Void MovePoint( int a, int b){ x+=a; y+=b;}
Void print()const { cout<<"x="<<x<<"y="<<y<<endl;}
};
void main( )
{
Point point1(1,1);
const Point point2( 2,2);//常量对象
point1.print();//普通对象可以调用常成员函数
point2.print( );//常对象调用常成员函数
}
本程序执行结果:
x=1 y=1
x=2 y=2
使用const关键字说明的成员函数称为常成员函数,常成员函数的说明格式如下:
<返回类型说明符> <成员函数名>(<参数表>) const;
; 在使用常成员函数时要注意:
(1) const是函数类型的一个组成部分,因此在函数实现部分也要带有const关键字。
(2) 常成员函数不更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。
(3) 常对象只能调用它的常成员函数,而不能调用其他成员函数。成员函数与对象之间的操作关系如表12-1所示。
(4) const关键字可以用于参与重载函数的区分。例如:
void Print();
void Print() const;
这两个函数可以用于重载。重载的原则是:常对象调用常成员函数,一般对象调用一般成员函数。
(5)在const成员函数中:
可以修改被定义成mutable的成员变量
- 常对象 常成员函数 的关系
- 常对象与常成员函数的关系
- 常对象与常成员函数的关系
- 常对象与常成员函数的关系
- C++常对象与常成员函数的关系
- 常成员函数与常对象
- 常成员函数与常对象
- 常成员函数与常对象的使用
- 常对象 常成员函数
- 常对象与常成员
- 常引用,常对象,常成员函数,常数据成员~
- 有关C++中的常对象,常成员函数,常数据成员,常引用的认识
- C++ 常对象成员、常成员函数
- 常对象成员和常成员函数
- 常对象、常对象成员、常成员函数
- C++之常对象、常成员变量与常成员函数详解
- 常成员变量、常成员函数及常对象
- C++常对象、常成员函数的学习
- html笔记
- 网络工程师_一个学习笔记(1.2)
- jspSmartUpload组件中的主要类
- C# 中的回车换行符
- 网络工程师_一个学习笔记(5.6)
- 常对象与常成员函数的关系
- VC++的链接错误LNK2005总结
- js日历
- 三层交换机不能完全取代路由
- 网络工程师_一个学习笔记(3.4)
- 字符串按单词倒置
- iis服务器配置,适合初学者
- VS比较重要的几个工具
- 积累