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 ...
随机推荐
- 关于Windows Service的一个编写技巧
写过Windows Service的朋友都知道服务是不可以直接在vs里面启动调试,我们必须修改Program.cs文件来达到我们调试的目的,等服务调试好了以后还要把代码改回来,显非常的不方便,在这里为 ...
- 20165324 学习基础与C语言学习心得
20165324 技能学习心得与C语言学习 一.读后感及技能学习 做中学读后感 我认为给学生具体的, 能实践的, 能马上看到因果关系的教材和练习, 是激发学生兴趣, 好奇心, 求知欲的好方法. 我就是 ...
- [golang note] 错误处理
错误处理 • 错误处理的标准模式 √ golang错误处理的标准模式:error接口. √ golang函数如果要返回错误,规范上是将error作为多返回值中的最后一个,但这并非是强制要求. ▶ er ...
- PKU 1226 Substrings(字符串匹配+暴搜KMP模板)
原题大意:原题链接 给出n个字符串,找出一个最长的串s,使s或者s的反转字符串(只要其中一个符合就行)同时满足是这n个串的子串. 对于样例,第一组ABCD BCDFF BRCD最长的串就是CD; ...
- Restful概念
文章节选自: http://www.ruanyifeng.com/blog/2011/09/restful https://www.zhihu.com/question/28557115/answer ...
- Foundations of RESTful Architecture
Introduction The Representational State Transfer (REST) architectural style is not a technology you ...
- tensorflowxun训练自己的数据集之从tfrecords读取数据
当训练数据量较小时,采用直接读取文件的方式,当训练数据量非常大时,直接读取文件的方式太耗内存,这时应采用高效的读取方法,读取tfrecords文件,这其实是一种二进制文件.tensorflow为其内置 ...
- C/C++结构体语法总结
转自:http://blog.csdn.net/dawn_after_dark/article/details/73555562 结构体简介 结构体属于聚合数据类型的一类,它将不同的数据类型整合在一起 ...
- 虚拟中没有eth0
进行虚拟机的软拷贝和硬拷贝,或直接从一台机器上拷贝虚拟机硬盘文件到另一台机子的虚拟机上时,发现通过修改/etc/network/interfaces配置的IP没用,输入ifconfig,发现根本就没有 ...
- 20145216《java程序设计》课程总结
20145216<java程序设计>课程总结 每周读书笔记链接汇总 第一周学习总结 20145216<java程序设计>第一周总结 第二周学习总结 20145216<ja ...