C++中const关键字无处不在,我这里做下汇总,作为工具文章方便翻阅。

一:修饰数据成员

修饰的成员一单定义初始化后不能再进行修改,如:

const int a = 10;

a =20; //重新赋值直接会报错

当修饰类的成员函数时,先来段错误的代码

class Student
{
public:
Student(int i)
{
this->age = i; //age是const类型直接复制会报错
}
private:
const int age;
};

解决上面的错误有两种方法

方法一:

使用参数列表的形式(推荐使用)

class Student
{
public:
Student(int i):age(i)
{
} private:
const int age;
};

方法二:

定义age时直接赋值

class Student
{
public:
Student (); private:
const int age = 20;
};

二:修饰成员函数

在声明之后,实现体之前

格式为:

类型 函数名(参数....) const

const修饰的成员函数不能修改类中的成员函数,函数中只能调用const修饰的函数。

class Student
{
public:
Student (int i ):age(i)
{ } void update () const
{
age = age +1; //const 修饰的成员函数不能修改类中的成员变量
display(); //const 修饰的成员函数,函数中只能调用const修饰的成员函数
} void display()
{
cout << "age:" << endl;
}
private:
int age;
};

三:修饰类对象

const修饰的对象,只能调用const修饰的成员函数

class Student
{
public:
Student (int i ):age(i)
{ } void update () const
{
cout << "this is update" << endl;
} void display()
{
cout << "age:" << endl;
}
private:
int age;
}; int main()
{
const Student stu(30);
stu.update();
stu.display(); //const修饰的类对象 只能调用const修饰的成员函数
return 1;
}

成员函数有无const修饰可以构成重载,非const对象调用时优先调用非const修饰的成员函数,如不构成重载也可以调用const修饰成员函数。

class Student
{
public:
Student (int i ):age(i)
{ } void display()
{
cout << "void display()" << endl;
} void display() const
{
cout << "display() const" << endl;
}
private:
int age;
}; int main()
{
Student stu(30);
stu.display(); return 1;
}

输出结果:

【C++札记】const关键字的更多相关文章

  1. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  2. C++中const关键字的使用总结

    C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...

  3. final关键字+const关键字

    final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...

  4. C++学习11 类和new、delete操作符 类与const关键字

    如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...

  5. C++中的const关键字

    http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...

  6. 陈正冲老师讲c语言之const关键字

    1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...

  7. C语言之头文件,static与const关键字

    [前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...

  8. static和const关键字的作用

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

  9. const关键字详解

    const在函数前与函数后的区别 一   const基础         如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:         int   b   =   500; ...

随机推荐

  1. 自用 goodsdetail

    JSON.parse(data.parameter)  存的字符串 <select id="getGoodsBaseInfoById" resultType="co ...

  2. H5 利用vue实现图片上传功能。

    H5的上传图片如何实现呢? 以下是我用vue实现的图片上传功能,仅供参考. <!DOCTYPE html> <html> <head> <meta chars ...

  3. cjss 像编写css 一样开发web应用

    cjss 提供了使用类似css 的方式编写web 应用 cjss 包含的阶段 data prepare body element 几点说明 并不是所以阶段必须使用,但是每个级别只能存在一个script ...

  4. 【洛谷】P5024 保卫王国 (倍增)

    前言 传送门 很多人写了题解了,我就懒得写了,推荐一篇博客 那就分享一下我的理解吧(说得好像有人看一样 对于每个点都只有选与不选两种情况,所以直接用倍增预处理出来两种情况的子树之内,子树之外的最值,最 ...

  5. Wireshark常用快捷键&&过滤器语法

    目录 一.快捷键 二.过滤器语法 1.捕获过滤器的BPF(Berkeley Packet Filter)语法 2.显示过滤器 一.快捷键 Ctrl+M 标记/取消标记 shift+ctrl+N/B 下 ...

  6. 2019暑假Java学习笔记(三)

    目录 面向对象 对象 构造方法 引用与对象实例 static final 封装 this 继承 super 方法重载与重写 多态 抽象类 接口 内部类 成员内部类 静态内部类 局部内部类 匿名内部类 ...

  7. 剑指offer:数组中只出现一次的数字

    题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 思路分析: 1. 直接想法,每个数字遍历,统计出现次数,复杂度O(n^2),超时. 2. 借助 ...

  8. 数据分析之--log文件自动化分析

    https://mp.weixin.qq.com/s?__biz=MjM5NjE2MTIyMw==&mid=2257483803&idx=1&sn=efe24b040397cd ...

  9. linux shell中如何批量添加一行内容到某些文件的末尾?

    答:先使用find找出要指定的某些文件,然后使用xargs和sed工具将内容插入到这些文件的末尾 find . -name 'filename*' | xargs sed -i '$a\added-c ...

  10. Oracle系列五 多表查询

    笛卡尔集笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. Oracle 连接 使用连接在多个表中查询数据 ...