C++类与const关键字
一句话概括: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关键字相关推荐
- C++核心——类中的const关键字
C++核心--类中的const关键字 在C中我们都知道const修饰的变量时不可改的,C++中这条原则同样使用,但是C++中类中使用const时有一些特殊用法,本文主要记录类中的一些特殊用法. 利用c ...
- C++ const关键字的总结(全局/局部变量、修饰指针和引用、成员函数和数据成员、修饰类对象、const与宏定义的区别、Static与Const的区别)
const关键字 const关键字 1.什么是const 2.使用原理 2.1.const全局/局部变量 2.2.cosnt修饰指针和引用 2.3.const修饰函数参数 2.4.const修饰函数返 ...
- C++中的const关键字(zz)
[补充]mutable关键字 有时我们希望类的数据成员即使在const成员函数中,依然是可以修改的,这时就可以把它们声明为mutable来实现.这样的应用,比如记录各种操作的调用次数,这时,即使在co ...
- c++语言关键字大全,C++语言const 关键字使用方法图文详解
之前一直在学习C/C++,关于const的使用,这里出现一点,那里出现一点.知识用时方恨少,这一段时间正好各种笔试题,其中关于const的用法也是层出不穷,所以疲于在书本上各种翻,这里汇总一下,加深自 ...
- final关键字_Dart核心语言基础const关键字与final关键字的区别
题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼搏过,尽力过,一切问心无愧 本文描述 Dart 中 const 关键字与 final 关键字的基本使用知识点以及对比区别. Dart核心基 ...
- C/C++ static和const关键字的作用
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...
- php创建类用什么关键字,PHP面向对象开发之类的常用关键字
php中类的常用关键字包括有:锁(fianl).有点类似与this关键字(self).静态属性(static).常量关键字(const)下面我来给大家整理整理. 类中的常用关键字 1.fianl:锁 ...
- const关键字的作用?
const关键字的作用 const关键字的作用如下六条 const关键字的作用如下六条 (1)欲阻止一个变量被改变,可以使用const关键字.在定义该const变量时,通常需要对它进行初始化,因为以后 ...
- C++ const 关键字小结
const 是 constant 的缩写,本意是不变的,不易改变的意思.在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数. C++ const 允许指定一个语义约束,编译器 ...
最新文章
- libsvm 数据预处理 模块化程序
- 西北工业大学复试上机
- 音视频技术开发周刊 | 194
- P2485-[SDOI2011]计算器【BSGS,exgcd,快速幂】
- Luogu1979 NOIP2013D2T3 华容道 搜索、最短路
- c语言中的switch语句中的break和continue的作用
- JavaScript中的Math方法演示
- 为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢...
- Node.js下载安装及各种npm、cnpm、nvm、nrm配置(保姆式教程—提供全套安装包)—nvm的安装与配置(4)
- 谈谈CountDownLatch和CyclicBarrier
- cipher命令(转)
- 深入浅出mysql csdn_《深入浅出MySQL:数据库开发、优化与管理维护
- 那些只有几行,但是却非常牛逼的代码!
- 【python】pdf转png
- 栈和堆的区别是什么? 为什么说栈的速度快,堆的速度慢?
- 计算机一级设置项目符号,重推计算机等级考试题库:一级MS Office第三章“项目符号和段落编号”...
- CodeForces 1K-1600R-1407C Chocolate Bunny
- qq炫舞摘经验秒级计算机,QQ炫舞8周年回归秒升30级活动
- uni-app开发ios App,如何去掉底部安全空白区域
- #DAYU200#Ability入门