【C++札记】const关键字
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关键字的更多相关文章
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- C++中const关键字的使用总结
C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...
- final关键字+const关键字
final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...
- C++学习11 类和new、delete操作符 类与const关键字
如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...
- C++中的const关键字
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...
- 陈正冲老师讲c语言之const关键字
1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...
- C语言之头文件,static与const关键字
[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...
- static和const关键字的作用
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...
- const关键字详解
const在函数前与函数后的区别 一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; ...
随机推荐
- 求x,y中的最大值
分析: 输入——变量x,y存放输入的两个整数: 输出——变量m存放输入的两个整数的最大值,m为输出: 算法——如果x比y大,x赋给m,否则y赋给m. #include<stdio.h>vo ...
- learning scala akka ask_pattern
package com.example import akka.actor._ import akka.util.Timeout object Tutorial_03_Ask_Pattern exte ...
- 如何在Unity中开发Leap Motion桌面版(Non-VR)APP
最近因需要,翻出几年前的Leapmotion感测器,准备用Unity3D做个互动APP,于是连上官网下载SDK.等下载下来一安装调试,瞬间傻眼,居然要求VR设备.我们Lab倒是不缺VR,有几套VIVE ...
- TCP网络程序设计
tcp_server.c #include<stdio.h>#include<sys/socket.h>#include<string.h>#include< ...
- 前端微信小程序生鲜类仿爱鲜蜂微信小程序
需求描述及交互分析设计思路和相关知识点首页界面布局设计闪送超市纵向导航设计商品添加到购物车设计购物车商品显示设计收货地址列表显示设计新增收货地址设计 交互分析(1)底部标签导航有首页.闪送超市.购物车 ...
- mac 下的 tree 命令 终端展示你的目录树结构
相信很多使用过Linux的用户都用过tree命令,它可以像windows的文件管理器一样清楚明了的显示目录结构.mac 下使用 brew包管理工具安装 tree 前提:安装了homebrew(安装指令 ...
- 【AtCoder】 ARC 103
link C-//// 直接算会出现奇偶两组选了同一个数,注意处理一下就行 #include<bits/stdc++.h> #define ll long long #define dbg ...
- office2010安装不了提示已经安装32位的了怎么办
1.打开控制面板,查看是否有安装的程序没有拆卸,如果没有继续往下看,如果有直接拆卸掉,再进行下面的步骤. 2.首先打开注册列表.按下win+R键即可打开,输入regedit,也可以在开始菜单中搜索re ...
- Linux 文件系统磁盘空间与连接文件
磁盘与目录的容量 我们知道磁盘的整体数据hi在superblock块中,但是各文件的容量则在inode中记载. df:列出文件系统的整体磁盘使用量 由于df主要读取的数据几乎都是针对整个文件系统,因此 ...
- 打jar包和使用jar包
一.为什么要打jar包 二.如何查看jar包 三.如何开发jar包 四.拿到jar包之后,如何使用 一.为什么要打jar包 给别人用的时候一般给别人的是class文件.如果有很多类这么办?把类变成一个 ...