83.const与类
- const常量对象,无法改变数据,只能引用尾部带const方法
- 类的成员如果是const,可以默认初始化,也可以构造的初始化,不可在构造函数内部初始化
- 类中的const成员,无法直接修改,可以间接修改
- 类的成员函数const三种情形:1.返回值const,2.返回常量,3.参数const,可读不可写,尾部const,常量对象可读不可以写,变量可以访问
- const不适用于构造与析构
- mutable不受const锁定
代码示例
#include <iostream>
using namespace std; //创建对象的时候,const常量对象,无法改变数据,只能引用尾部带const方法
//类的成员如果是const,可以默认初始化,也可以构造的初始化,不可在构造函数内部初始化
//类中的const成员,无法直接修改,可以间接修改
//类的成员函数const三种情形:1.返回值const,2.返回常量,3.参数const,可读不可写,尾部const,常量对象可读不可以写,变量可以访问
//const不适用于构造与析构 class myclass
{
public:
int x;
int y;
//如果有常量构建的时候必须初始化,或者默认初始化
const int z; myclass(const int a):z(a)
{
} //后面加const表明不改变原生数据
void show() const
{
cout << z << endl;
} //保护参数不被修改
void change(const int a,const int b)
{
x = a;
y = b;
} const int getx() const //返回一个常量,函数有保护作用
{
return x;
}
}; //内部const
void mai1n()
{
//常量对象,只能调用带const的方法,无法修改数据
const myclass my1();
//声明为const不能随意修改
//my1.x = 20;
//间接修改类中的const变量
int *p = const_cast<int *>(&my1.z);
*p = ;
my1.show(); cin.get();
} //外部const class myclass2
{
public:
int x;
int y;
int z; //可以在const函数中改变,不被const锁定
mutable int time; myclass2(int a = , int b = , int c = ) :x(a), y(b), z(c)
{ } void show() const
{
time = ;
cout << x << y << z << endl;
} void set(int a,int b,int c)
{
x = a;
y = b;
z = c;
}
}; void main()
{
//这个对象不能改变数据
const myclass2 my(, , );
const myclass2 *p = new myclass2(, , ); //不能改变指针的指向
myclass2 *const p2 = new myclass2(, , );
//既不能改变指向也不能改变数据
const myclass2 *const p3 = new myclass2(, , );
p2->show();
}
83.const与类的更多相关文章
- [转载]能不能同时用static和const修饰类的成员函数?
题目(一):我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量).请问:能不能同时用static和con ...
- const型类成员
一.关于const类成员函数有以下几个需要注意的地方: 1. 在普通的非const成员函数中,this的类型是一个指向类类型的const指针,而const成员函数中,this的类型是一个指向const ...
- 用 const 限定类的成员函数
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于 ...
- const(每个对象中的常量), static const(类的编译时常量)
1 每个对象中的常量 --- const数据成员 const限定,意味着“在该对象生命周期内,它是一个常量”. 关键字const 使被限定的量为常量 在该类的每个对象中,编译器都为其const数据成员 ...
- Java基础知识强化83:System类之gc()方法(垃圾回收)以及和finalize()区别
1. System概述: System类包含一些有用的类字段和方法.它不能被实例化. 2. gc()方法:垃圾回收器 public static void gc() 调用gc方法暗示着Ja ...
- [UE4]C++的const类成员函数
我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误.例如: const char blank = ‘’; blank = ‘\n’; // 错误 要声明一个 ...
- C++的const类成员函数
转自:http://blog.csdn.net/lihao21/article/details/8634876 我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编 ...
- 【c++】类中的const成员
const成员变量 举个例子 #include <iostream> using namespace std; class A { public: A(int size) : SIZE(s ...
- php类中const
常量 const 在类里面定义常量用 const 关键字,而不是通常的 define() 函数. 语法: const constant = "value"; 例子: <?ph ...
随机推荐
- 集合TreeSet的使用
集合中的TreeSet是集合体系结构中的底层实现,是Collection的孙子,Set的儿子.TreeSet除拥有父接口的特点外,还有其自身的特点.下面就看看TreeSet的排序是怎么实现的.从它的构 ...
- 射击的乐趣:WIN32诠释打飞机游戏
一楼留给链接http://blog.csdn.net/crocodile__/article/details/11860129 楼上神贴,膜拜片刻...... 一.游戏玩法和已经实现的功能 1.打开游 ...
- Javascript中继承
Javascript中继承 构造函数继承 原型继承 call和apply继承 组合继承
- 关于git及其github的使用
一:序言(就是瞎扯) 人们都说不会使用git和github的程序员都不是好程序员,是的,当我第一次听到的时候有点失望.因为我也不会...但是这句话激起了我学习使用git的动力(其实也没怎么深入的学习) ...
- 【Henu ACM Round#19 C】 Developing Skills
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 优先把不是10的倍数的变成10的倍数. (优先%10比较大的数字增加 如果k还有剩余. 剩下的数字都是10的倍数了. 那么先加哪一个 ...
- cocos2dx 3.0 windows8下开发环境搭建搭建 不须要cygwin
已经接触cocos2dx有一段时间,但一直也仅仅是看看Demo,没有真正的去写代码.由于本人仅仅是java的coder.还是半路出家的coder,编程基础太浅. 对于c++.lua也不懂.近期coco ...
- HDU3265 Examining the Rooms【stirling数】
题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=3625 题目大意: 有N个房间,每一个房间的要是随机放在某个房间内,概率同样.有K次炸门的机会. 求 ...
- hdu4691 Front compression(后缀数组)
Front compression Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others) ...
- HBase源代码分析之HRegion上MemStore的flsuh流程(二)
继上篇<HBase源代码分析之HRegion上MemStore的flsuh流程(一)>之后.我们继续分析下HRegion上MemStore flush的核心方法internalFlushc ...
- 维护的JSP站点数据丢失
两个月前换了份工作,然后接手了三台server.上面乱七八糟的网站和应用大把. 当中有维护一个瀚石苑:http://www.hanshiyuan.com/.三天两头的丢失数据. 都不知道怎么找回,好在 ...