• 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与类的更多相关文章

  1. [转载]能不能同时用static和const修饰类的成员函数?

    题目(一):我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量).请问:能不能同时用static和con ...

  2. const型类成员

    一.关于const类成员函数有以下几个需要注意的地方: 1. 在普通的非const成员函数中,this的类型是一个指向类类型的const指针,而const成员函数中,this的类型是一个指向const ...

  3. 用 const 限定类的成员函数

    类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于 ...

  4. const(每个对象中的常量), static const(类的编译时常量)

    1 每个对象中的常量 --- const数据成员 const限定,意味着“在该对象生命周期内,它是一个常量”. 关键字const 使被限定的量为常量 在该类的每个对象中,编译器都为其const数据成员 ...

  5. Java基础知识强化83:System类之gc()方法(垃圾回收)以及和finalize()区别

    1. System概述: System类包含一些有用的类字段和方法.它不能被实例化. 2. gc()方法:垃圾回收器 public static void gc()       调用gc方法暗示着Ja ...

  6. [UE4]C++的const类成员函数

    我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误.例如: const char blank = ‘’; blank = ‘\n’; // 错误 要声明一个 ...

  7. C++的const类成员函数

    转自:http://blog.csdn.net/lihao21/article/details/8634876 我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编 ...

  8. 【c++】类中的const成员

    const成员变量 举个例子 #include <iostream> using namespace std; class A { public: A(int size) : SIZE(s ...

  9. php类中const

    常量 const 在类里面定义常量用 const 关键字,而不是通常的 define() 函数. 语法: const constant = "value"; 例子: <?ph ...

随机推荐

  1. 基于jquery 的find()函数和children()函数的区别

    element.find(selector)  返回匹配element集合中每个元素的后代,参数selector是必须的,可以通过选择器对元素进行过滤,筛选出符合条件的元素.如果想选中所有的后代元素, ...

  2. hdu 2647 Reward(拓扑排序+优先队列)

    Problem Description Dandelion's uncle is a boss of a factory. As the spring festival is coming , he ...

  3. HDU 1166 敌兵布阵(线段树单节点更新 区间求和)

    http://acm.hdu.edu.cn/showproblem.php?pid=1166 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Dere ...

  4. php时间戳转化成时间相差8小时问题

    php时间戳 转化成时间的时候 $mytime=time(); echo $mytime.'<br />'; echo date('Y-m-d H:i:s',$mytime); 会产生8个 ...

  5. Slimming Paint (a.k.a. Redesigning Painting and Compositing)

    Slimming Paint is a Paint team project to re-implement the Blink<->cc picture recording API to ...

  6. 浅谈Sass与Less区别、优缺点

    Sass是一种动态样式语言,Sass语法的缩排语法,比Css比多出很多功能,如变量,嵌套,运算,继承,颜色处理,函数等,易于阅读.Cass的安装需要安装Ruby环境,是服务器端处理的,Less是需要引 ...

  7. 瞎折腾-CentOS 7.4 编译4.16.2版kernel 并安装

    CentOS 7.4下 原内核版本: 3.10.0-693.el7.x86_64 改后内核版本: 4.16.2 系统版本: CentOS-7-x86_64-Minimal-1708.iso 运行环境: ...

  8. bzoj1230 开关灯 线段树

    好久没写线段树了..被一道线段树裸题卡了一个上午 对区间进行异或,查询的时候直接用区间长度减去原有是数量就是改变完的数量 #include<bits/stdc++.h> using nam ...

  9. traits的介绍

    traits基本利用了上一篇文章的思想,通过局部特化,来返回针对特定类型的信息. 可以自己实现traits,约定俗成了,返回特性信息. 也可以利用iterator的traits信息. iterator ...

  10. JVM学习心得

    出处:http://blog.csdn.net/qq_16143915/article/details/51195438 一.JAVA内存管理与GC机制 Java在JVM所虚拟出的内存环境中执行,ja ...