C++(三十二) — 常对象、常成员变量、常成员函数
常量:对于既需要共享、又需要防止改变的数据。在程序运行期间不可改变。
const 修饰的是对象中的 this 指针。所以不能被修改。
this指针存在于类的成员函数中,指向被调用函数所在的类实例的地址。
1、常对象
数据成员值在对象的整个生存期内不能改变。在定义时必须初始化,而且不能被更新。
常对象,只能调用常成员函数,保证常对象的数据成员不被改变。
class point
{
public:
point(int i, int j)
{
x = i, y = j;
}
private:
int x, y;
};
// 定义常对象
point const a(, ); // 定义时,初始化
2、常成员变量
常数据成员,一经初始化就不可改变。构造函数对其进行初始化,只能通过初始化列表。
通常把常数据成员定义为静态成员,使其成为类的一个常量。
初始化实例:
class circle
{
public:
circle(int r, int i);
void print();
private:
int ri;
const int a;
static const float pi; //静态常数据成员
};
// //静态常数据成员,类外初始化
const float circle::pi = 3.14;
// 常数据成员只能通过初始化列表,获得初值
// a 为常成员数据,不能把 a=i 写到构造函数体内,必须通过初始化列表获取初值
// 普通成员也可在初始化列表中赋值
circle::circle(int r, int i) :a(i), ri(r)
{
} void circle::print()
{
cout << ri << endl;
}
void main()
{
circle x(, );
x.print();
system("pause");
return;
}
3、常成员函数
const修饰常成员函数,写在什么位置没有关系。
修饰的是this 指针所指向的内存空间,不可以改变。
void OpVar(int a, int b) const
{
a = ;
this->b = ;// 会报错,不可更改 }
class R
{
public:
R(int ra, int rb)
{
r1 = ra; r2 = rb;
}
void change(int, int);
void print() const; // 定义常成员函数
private:
int r1, r2;
}; void R::change(int a, int b)
{
r1 = a; r2 = b;
}
void R::print() const
{
cout << r1 << ", " << r2 << endl;
}
void main()
{
R a(, );
a.print(); // 调用常成员函数 print()
// 定义常对象,不可调用普通函数 change()
const R b(, );
b.print();// 调用常成员函数 print()
system("pause");
return;
}
C++(三十二) — 常对象、常成员变量、常成员函数的更多相关文章
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- SQL注入之Sqli-labs系列第三十二关(基于宽字符逃逸注入)
开始挑战第三十二关(Bypass addslashes) 0x1查看源代码 (1)代码关键点 很明显,代码中利用正则匹配将 [ /,'," ]这些三个符号都过滤掉了 function che ...
- Bootstrap <基础三十二>模态框(Modal)插件
模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用 ...
- NeHe OpenGL教程 第三十二课:拾取游戏
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...
- Java进阶(三十二) HttpClient使用详解
Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...
- 【转】C++ const成员变量和成员函数(常成员函数)
转:http://c.biancheng.net/view/2230.html 在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. co ...
- C++ const成员变量和成员函数(常成员函数)
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只 ...
- 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...
随机推荐
- Apache Spark 2.0三种API的传说:RDD、DataFrame和Dataset
Apache Spark吸引广大社区开发者的一个重要原因是:Apache Spark提供极其简单.易用的APIs,支持跨多种语言(比如:Scala.Java.Python和R)来操作大数据. 本文主要 ...
- lua全局状态机
本文内容基于版本:Lua 5.3.0 global_State概述 global_State结构,我们可以称之为Lua全局状态机.从Lua的使用者角度来看,global_State结构是完全感知不到的 ...
- PKU 1208 The Blocks Problem(模拟+list应用)
题目大意:原题链接 关键是正确理解题目意思 首先:介绍一下list容器的一些操作:参考链接 list<int> c1; c1.unique(); 去重. c1.r ...
- linux 注销其他用户
本文主要参考:http://ysz520020.blog.163.com/blog/static/352595722011969264745 linux kill掉其他的登录用户 : 方法一: 使用 ...
- Linux 系统日志管理 rsyslogd配置文件
rsyslogd配置文件 rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的.也就是说,日志服务的配置文件中主要定义了 ...
- 在VS2012中采用C++中调用DLL中的函数(4)
转自:http://www.cnblogs.com/woshitianma/p/3683495.html 这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天 ...
- 【Beginning Python】抽象(未完)
[懒惰即是美德] 抽象意味着良好的可读性:说明你在努力做什么,而不是给出你正在如何做的细节. [抽象和结构] 程序应该是非常抽象的,就像“下载网页.计算频率.打印每个单词的频率”一样易懂.翻译成程序就 ...
- RocEDU.阅读.写作《苏菲的世界》书摘(三)
根据柏拉图的说法,人是一种具有双重性质的生物.我们的身体是"流动"的,与感官的世界不可分割,并且其命运与世界上其他每一件事物(如肥皂泡)都相同.我们所有的感官都是以身体为基础,因此 ...
- 20145327 《Java程序设计》第三周学习总结
20145327 <Java程序设计>第三周学习总结 教材学习内容总结 对象:存在的具体实体,具有明确的状态和行为. 类:具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属 ...
- tornado之WebSocket
WebSocket WebSocket是HTML5规范中新提出的客户端-服务器通讯协议,协议本身使用新的ws://URL格式. WebSocket 是独立的.创建在 TCP 上的协议,和 HTTP 的 ...