转载自:http://www.diybl.com/course/3_program/c++/cppsl/2008525/117871.html

(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;
常成员函数的作用和功能:
常成员函数不能更新对象的数据,也不能调用非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的成员变量

转载于:https://www.cnblogs.com/honeybusybee/p/5257424.html

常对象和常函数的关系 const相关推荐

  1. 常对象与常函数(Const修饰的对象与成员函数)

    常函数: 其定义与注意事项如下:     1.成员函数后加const后,我们称这个函数为常函数     2.常函数内不可修改成员属性     3.成员属性声明时加关键字mutable后,在常函数中依然 ...

  2. C++学习(六) 常引用、常对象、常对象成员、常成员函数

    文章目录 1.常引用 1.1.作用 1.2.说明 二.常对象 2.1.作用 2.2.注意 2.3.说明 三.常对象成员 3.1.作用 3.2.说明 四.常成员函数 4.1.说明 4.2.注意 1.常引 ...

  3. C++常对象,常变量,常成员函数详解(含添加内容)

    既要使数据能在一定范围内共享,又要保证它不被任意修改,可使用const. ·        用const修饰的声明数据成员称为常数据成员 ·        用const修饰的声明成员函数称为常成员函数 ...

  4. C++中的常对象与常引用

    目录 一.常对象 二.用const修饰的类对象 1.常成员函数 声明 注意 三.常引用 1.声明 2.应该在何时使用: 1.在函数中无需改变其值的参数,应该使用常引用. 2.复制构造函数的参数一般也宜 ...

  5. C++中的常引用、常对象、常函数、常数据成员

    1.常引用 用const声明的引用就是常引用.常引用所引用的对象不能被更改.经常见到的是常引用作为函数的形参,这样不会发生对实参的误修改.常引用的声明形式为:const 类型说明符 &引用名. ...

  6. C++中常对象、常成员函数、常成员变量

    用const修饰的类对象叫做常对象, 用const修饰的成员函数叫常成员函数, 用const修饰的成员变量叫常成员变量, 常对象: 型如:      const  <类名>  <对象 ...

  7. C++中常对象与常成员函数以及this与成员函数的联系与区别

    class A { }; /* 小记:对于const声明的对象,针对哪个变哪个不变得问题,实际上就是const后的整体不变 e.g.: const int *A; 或 int const *A; / ...

  8. C++高阶 常对象和常函数

    常函数 在成员函数的声明及定义的形参括号后边加上const关键字,注意如果存在声明的话,声明和定义都必须加上const,这就叫常函数,常函数指的是常成员函数,普通函数不能用const修饰. class ...

  9. C++ 之常对象,常对象成员

    一.常对象: 1.常对象定义:Time  const  t1(1,2,3)或者const Time t1: 2.常对象不能调用该对象的非const型的成员函数(系统主动调用的构造析构函数除外): 3. ...

最新文章

  1. Oracle-锁解读
  2. 面试的时候的要注意的case应该怎么分析
  3. nyoj1170最大的数
  4. Oracle数据库事务回滚和提交,数据库 事务提交和回滚
  5. Sql Server 2016数据库生成带数据的脚本
  6. 优酷视频如何修改账号密码?
  7. 电脑DNS优选网络加速工具 可以提高网速
  8. CSDN改版问题多多
  9. C#:泛型(Generic)
  10. PHP 霸主地位被动摇,JIT 是穷途末路后的绝地反击?
  11. HDU1849 Rabbit and Grass【Nim博弈】
  12. 计算机维保资质,电脑维保属于技术合同吗?
  13. gvim 启动 全屏
  14. 88se9230 linux raid,Gen10磁盘控制器Marvell 88SE9230阵列RAID设置方法教程图文
  15. 试凑法整定PID参数
  16. 祝大家2019新春快乐
  17. 程序员学算法必备网站之一:VisuAlgo
  18. Ubuntu虚拟机下载(清华大学开源软件镜像源)
  19. msg文件转成html文件,如何将MSG格式的文件转换为PDF格式文件?
  20. 程序写情诗|专属于程序员的浪漫

热门文章

  1. DVWA-CSRF-low级别
  2. Android入门教程:ConstraintLayout约束布局
  3. Vnc-server——linux远程桌面配置
  4. FastDFS点滴记录
  5. SharePoint2010人员搜索
  6. Python 操作 Windows 粘贴板
  7. LeetCode 892. 三维形体的表面积
  8. js ws 状态_node.js中ws模块创建服务端和客户端,网页WebSocket客户端
  9. vue里面rules_vue如何使用rules对表单字段进行校验
  10. Yearn已部署新YFI策略Brownie Mix