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. ASP.net MVC C# 当前上下文中不存在名称"viewbag"

    出现的错误如下: 错误 2 当前上下文中不存在名称“model” e:\Stuff\projects\蓝狐软件工作室\src\Lanhu.Admin\Views\Student\Index.cshtm ...

  2. CSS3 之filter毛玻璃效果弹窗

    先看效果: 效果主要用css3的滤镜属性实现,代码如下: <!DOCTYPE html> <html lang="en"> <head> < ...

  3. mysql lower()函数

    mysql> select " DFREF"; +--------+ | DFREF | +--------+ | DFREF | +--------+ row in set ...

  4. Java为什么没有指针

    为了摒弃指针带来的风险(当然了,也就放弃了指针带来的效率). 1.C/C++为什么有指针? 这个很简单,程序都是在内存中运行的,只要有内存,就有内存地址,有地址,就必然有指针,只是C++对内存地址的访 ...

  5. 数据结构---公交线路提示系统05(内附读取表格+迪杰斯特拉算法Java代码)

    今天做的最多的事情就是纠错了,通过添加输出语句判断错误来源: 找到错误来源: wb = new XSSFWorkbook(input);//语句创建错误 网上查询发现是jar包的问题: 下图为poi的 ...

  6. elasticsearch: can not run elasticsearch as root

    进入bin目录启动elasticsearch: lunadeMacBook-Air:elasticsearch-6.1.0 luna$ cd bin/ lunadeMacBook-Air:bin lu ...

  7. 去掉 vue 的 "You are running Vue in development mode" 提示

    去掉 vue 的 "You are running Vue in development mode" 提示 在项目的 main.js 中已经配置了 Vue.config.produ ...

  8. 如何使用Salt Pillar

    作者言 Salt的网站上有两篇关于Pillar的文档(一,二),其中一篇内容很少,我觉得写成一篇文章更合适.本文的逻辑结构没有参照官方文档,而是根据我自己对Pillar的理解组织内容,希望能够把这个概 ...

  9. nginx 二级目录反向代理

    location /faceapi/ { #default_type application/json; # return 200 '{"status":"success ...

  10. freeNAS nfs linux挂载

    新建存储块,设置权限为root wheel 备份修改/var/lib/nova 名称 新建/var/lib/nova 目录,修改目录的属主机权限 mv /var/lib/nova /var/lib/n ...