83.const与类
2024-08-31 16:46:54
- 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();
}
最新文章
- Linux系统编程-防止僵尸进程产生的常用方法
- WPF面板布局介绍Grid、StackPanel、DockPanel、WrapPanel
- 粒子群算法 Particle Swarm Optimization, PSO(转贴收藏)
- HTML 5中的文件处理之FileAPI(转载)
- .NET之美——1.1 C#中的泛型
- PL SQL Developer 使用总结
- ‘for’ loop initial declarations are only allowed in C99 mode
- AngularJS心得体会
- 201521123017 《Java程序设计》第4周学习总结
- ionic笔记
- 06mycat使用haproxy进行负载均衡
- .NET垃圾回收机制(二)
- Kindle:自动追更之发送邮件
- K-means之亚洲杯
- (转)经验分享:CSS浮动(float,clear)通俗讲解
- Oracle exp/imp 导出/导入
- [android] 切换按钮-自定义控件
- Socket心跳包机制【转】
- git切换分支(自记)
- 黑客编程教程(八)编写NT服务
热门文章
- PGA和UGA内存的使用情况
- IE11 mobile 的 UA(User-Agent)
- 002.ES2015和ES2016新特性--箭头函数.md
- Linux 下段错误 core文件
- codeforces 527 C Glass Carving
- webService接口发布失败问题
- Bootstrap modal.js 源码分析
- 洛谷 P2542 [AHOI2005]航线规划 树链剖分_线段树_时光倒流_离线
- NodeJS学习笔记 (27)实用工具模块-util(ok)
- 05002_Linux的安装