一句话概括:const成员变量参考C语言;const成员函数中,const写在函数后面,如:func()const,const成员函数只能使用const成员变量,但不能修改const成员变量;const对象,该对象就只能调用类中的常成员函数了。如果要修改常对象中的成员变量,那么应该将该对象设置为mutable(可变的)。

const成员变量

const成员变量其用法和普通的const变量用法相似,在定义时只需在前面加上const关键字即可。

const成员函数

const成员函数可以使用类中的所有成员变量,但是不能修改变量的值,这种措施主要还是为了保护数据而设置的。

常成员函数就是在声明和定义的时候在函数头部的结尾加上const关键字。

const对象

const对象定义的基本语法如下:
    const 类名 对象名(实参名);
    类名 const 对象名(实参名);
这两种定义方式都是可以的,我们一旦将对象定义为常对象之后,该对象就只能调用类中的常成员函数了。

#include<iostream>
using namespace std;class book
{
public:book(){}book(book &b);book(char* a, double p = 5.0);void setprice(double a);double getprice()const;void settitle(char* a);char * gettitle()const;void display()const;
private:double price;char * title;
};book::book(book &b)
{price = b.price;title = b.title;
}book::book(char* a, double p)
{title = a;price = p;
}void book::display()const
{cout<<"The price of "<<title<<" is $"<<price<<endl;
}void book::setprice(double a)
{price = a;
}double book::getprice()const
{return price;
}void book::settitle(char* a)
{title = a;
}char * book::gettitle()const
{return title;
}int main()
{const book Alice("Alice in Wonderland",29.9);Alice.display();Alice.setprice(51.0);//compile errorreturn 0;
}

关键字mutable

有些时候我们在程序设计过程中要求修改常对象中的某个成员变量,这个时候如果是普通的成员变量是不能被修改的。为了满足这一需求,C++提供了mutable关键字。

mutable int var;

通过这样的声明将变量var声明为可变的成员变量,此时如果要修改常对象的该变量时,只需要通过常对象调用const成员函数修改该变量即可。

对象的const引用

#include<iostream>
using namespace std;class book
{
public:book(){}book(book &b);book(char* a, double p = 5.0);void setprice(double a);double getprice()const;void settitle(char* a);char * gettitle()const;
private:double price;char * title;
};book::book(book &b)
{price = b.price;title = b.title;
}book::book(char* a, double p)
{title = a;price = p;
}void book::setprice(double a)
{price = a;
}double book::getprice()const
{return price;
}void book::settitle(char* a)
{title = a;
}char * book::gettitle()const
{return title;
}void display(const book &b)
{b.setprice(59.9);  //compile errorcout<<"The price of "<<b.gettitle()<<" is $"<<b.getprice()<<endl;  //ok
}int main()
{book Alice("Alice in Wonderland",29.9);display(Alice);book Harry("Harry potter", 49.9);display(Harry);return 0;
}

C++类与const关键字相关推荐

  1. C++核心——类中的const关键字

    C++核心--类中的const关键字 在C中我们都知道const修饰的变量时不可改的,C++中这条原则同样使用,但是C++中类中使用const时有一些特殊用法,本文主要记录类中的一些特殊用法. 利用c ...

  2. C++ const关键字的总结(全局/局部变量、修饰指针和引用、成员函数和数据成员、修饰类对象、const与宏定义的区别、Static与Const的区别)

    const关键字 const关键字 1.什么是const 2.使用原理 2.1.const全局/局部变量 2.2.cosnt修饰指针和引用 2.3.const修饰函数参数 2.4.const修饰函数返 ...

  3. C++中的const关键字(zz)

    [补充]mutable关键字 有时我们希望类的数据成员即使在const成员函数中,依然是可以修改的,这时就可以把它们声明为mutable来实现.这样的应用,比如记录各种操作的调用次数,这时,即使在co ...

  4. c++语言关键字大全,C++语言const 关键字使用方法图文详解

    之前一直在学习C/C++,关于const的使用,这里出现一点,那里出现一点.知识用时方恨少,这一段时间正好各种笔试题,其中关于const的用法也是层出不穷,所以疲于在书本上各种翻,这里汇总一下,加深自 ...

  5. final关键字_Dart核心语言基础const关键字与final关键字的区别

    题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼搏过,尽力过,一切问心无愧 本文描述 Dart 中 const 关键字与 final 关键字的基本使用知识点以及对比区别. Dart核心基 ...

  6. C/C++ static和const关键字的作用

    static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...

  7. php创建类用什么关键字,PHP面向对象开发之类的常用关键字

    php中类的常用关键字包括有:锁(fianl).有点类似与this关键字(self).静态属性(static).常量关键字(const)下面我来给大家整理整理. 类中的常用关键字 1.fianl:锁 ...

  8. const关键字的作用?

    const关键字的作用 const关键字的作用如下六条 const关键字的作用如下六条 (1)欲阻止一个变量被改变,可以使用const关键字.在定义该const变量时,通常需要对它进行初始化,因为以后 ...

  9. C++ const 关键字小结

    const 是 constant 的缩写,本意是不变的,不易改变的意思.在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数. C++ const 允许指定一个语义约束,编译器 ...

最新文章

  1. libsvm 数据预处理 模块化程序
  2. 西北工业大学复试上机
  3. 音视频技术开发周刊 | 194
  4. P2485-[SDOI2011]计算器【BSGS,exgcd,快速幂】
  5. Luogu1979 NOIP2013D2T3 华容道 搜索、最短路
  6. c语言中的switch语句中的break和continue的作用
  7. JavaScript中的Math方法演示
  8. 为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢...
  9. Node.js下载安装及各种npm、cnpm、nvm、nrm配置(保姆式教程—提供全套安装包)—nvm的安装与配置(4)
  10. 谈谈CountDownLatch和CyclicBarrier
  11. cipher命令(转)
  12. 深入浅出mysql csdn_《深入浅出MySQL:数据库开发、优化与管理维护
  13. 那些只有几行,但是却非常牛逼的代码!
  14. 【python】pdf转png
  15. 栈和堆的区别是什么? 为什么说栈的速度快,堆的速度慢?
  16. 计算机一级设置项目符号,重推计算机等级考试题库:一级MS Office第三章“项目符号和段落编号”...
  17. CodeForces 1K-1600R-1407C Chocolate Bunny
  18. qq炫舞摘经验秒级计算机,QQ炫舞8周年回归秒升30级活动
  19. uni-app开发ios App,如何去掉底部安全空白区域
  20. #DAYU200#Ability入门

热门文章

  1. UA PHYS515A 电磁理论V 电磁波与辐射11 简单辐射问题 电偶极子的辐射
  2. 进一步学习WDK驱动程序的SOURCES文件、WMI驱动程序的mof文件和wmidata.h头文件
  3. Java虚拟机字节码指令概述
  4. codesmith学习总结
  5. SharpDevelop 5.1 调试一个简单会员管理系统
  6. w3cschool的jQuery Mobile教程总结
  7. 精简版开发工具使用手记(图解)
  8. 微信客服系统开发SDK使用教程- 拉取当前微信个人号列表请求(立即)
  9. Hadoop 故障整理
  10. POJ 3368 Frequent values 【ST表RMQ 维护区间频率最大值】