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 ...
随机推荐
- Hadoop2.7.3+spark2.1.0+hbase0.98分布式集群部署
运行环境配置(10.79.115.111-114) 1.关闭防火墙与selinux 关闭防火墙: CentOS 7.x默认使用的是firewall作为防火墙. systemctl stop firew ...
- R中seurat等问题学习
1.Seurat 转自:https://cloud.tencent.com/developer/article/1055892 # Initialize the Seurat object with ...
- PAT 1052 Linked List Sorting [一般]
1052 Linked List Sorting (25 分) A linked list consists of a series of structures, which are not nece ...
- Spring的AOP实现
内容详见切面编程系列 https://www.cnblogs.com/jiyukai/category/1265045.html.
- web Servlet 3.0 新特性之web模块化编程,web-fragment.xml编写及打jar包
web Servlet 3.0 模块化 原本一个web应用的任何配置都需要在web.xml中进行,因此会使得web.xml变得很混乱,而且灵活性差,因此Servlet 3.0可以将每个Servlet. ...
- 在vue中使用express-mock搭建mock服务
首先安装 nodemon ,如果是全局安装,那么所有的项目都可以使用mock服务 npm install nodemon 再安装express-mockjs npm i -D express-mock ...
- 解析库之——beautifulsoup
阅读目录 一 介绍 二 基本使用 三 遍历文档树 四 搜索文档树 五 修改文档树 六 总结 一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通 ...
- [笔记] Python实现全排列算法
所谓全排列,就是给定数组,将所有的可能排列组合都枚举出来,n个元素共有n!种排列组合. 举例,对于['1', '2', '3'],全排列结果为:123,132,213,231,312,321,共有3! ...
- 基于HTML5 FileSystem API的使用介绍(转)
FileSystem提供了文件夹和文件的创建.移动.删除等操作,大大方便了数据的本地处理, 而且所有的数据都是在沙盒(sandboxed)中,不同的web程序不能互相访问,这就保证了数据 的完整和安全 ...
- Chrome搜索设置
https://encrypted.google.com/ncr https://encrypted.google.com/search?{google:RLZ}{google:acceptedSug ...