C++常函数
常函数即在类的成员函数参数列表后放置const的函数,常函数的作用是限制函数体对成员变量的修改,此外,常函数也不能调用非 常函数。
#include <iostream>
using namespace std; class Test
{
private:
int x, y;
public:
Test() { x = ; y = ;}
void changeValue() const
{
x = ;
y = ;
print();
}
void print() { cout << x << endl << y << endl; }
}; int main()
{
Test t;
t.changeValue();
//t.print();
return ;
}
编译错误结果为:
其实,在代码当中如果我们确定某成员函数不会修改成员变量,就应该将其定义为常函数,这样如果不小心写错代码修改了变量的值就会编译不过。提高代码的健壮性。
C++常函数的更多相关文章
- C++中常函数内部的this指针也是const类型的
代码中碰到一个奇怪的现象,在同样的函数中调用this指针,结果却有一个无法通过编译 // 读取连接信息 void ThirdWizardPage::ReadConnection() { QFile f ...
- 构造函数和初始化表、this指针与常函数、析构函数、拷贝构造与拷贝赋值(day05)
十四 构造函数和初始化表 ... 初始化表 )语法形式 class 类名{ 类名(形参表):成员变量1(初值),...{} }; )必须要使用初始化表的场景 -->如果有类 类型的成员变量,而该 ...
- this指针/常函数、常对象
this指针引入 类中对象的成员变量和成员函数是分开存储的,sizeof(空class) = 1,另外示例中涉及到字节对齐的问题,double本身的字节为8,int为4,由于字节对齐,int也为8,所 ...
- 【转】C/C++程序员应聘常见面试题深入剖析
1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵.文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见. 许多面试题看似简单,却需要深厚的基 ...
- C++中的常对象和常对象成员
常对象 常对象必须在定义对象时就指定对象为常对象. 常对象中的数据成员为常变量且必须要有初始值,如 Time const t1(12,34,36); //定义t1为常对象 这样的话,在所有的场合中,对 ...
- C++之几个最常
1.同类对象间的数据共享——静态成员 静态数据成员声明静态数据成员要采用关键字static:类静态数据成员的定义和初始化定义:static 数据类型 成员名:初始化:数据类型 类名::静态数据成员名= ...
- C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
http://blog.csdn.net/gmstart/article/details/7046140 在C++的类定义里面,可以看到类似下面的定义: 01 class List { 02 priv ...
- [C/C++] C++常见面试题
参考:http://blog.csdn.net/shihui512/article/details/9092439 1.new.delete.malloc.free之间的关系 malloc和free都 ...
- C/C++程序员应聘常见面试题深入剖析(2)
摘自:http://blog.csdn.net/zhoudengqing 3.内功题 试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var) 解答: ...
随机推荐
- Zookeeper常用命令 (转)
原文链接:ZooKeeper系列之二:Zookeeper常用命令 ZooKeeper服务命令: 在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作 1. 启动ZK服 ...
- 未能加载文件或程序集“Antlr3.Runtime”或它的一个依赖项的解决办法
一.问题症状 未能加载文件或程序集“Antlr3.Runtime”或它的一个依赖项.参数错误. 二.问题起因和经过 今天我在虚拟机下做开发,asp.net mvc4开发测试微信接口,一不小心虚拟机 ...
- 数学图形(1.34) peut aussi曲线
这是一种左右对称的类圆形曲线 #http://www.mathcurve.com/courbes2d/lissajous/lissajous2.shtml vertices = t = to (*PI ...
- 采用web service传输超大数据
因为以前也没有做过相关的web service开发,对于Xfire也只是知道有这么一个框架.当然现在它已经变成apache基金会旗下的一个开源项目CXF.不过,现在依旧有很多公司还在用Xfire作we ...
- go语言基础之不同目录
1.不同目录 不同目录,包名不一样 调用不同包里面的函数,格式:包名,函数名() 调用别的包的函数,这个包函数名字如果是小写,无法让别人调用,要想别人能调用,必须首字母大写. 需要配置环境变量 临时配 ...
- Netbeans配合xdebug调试
http://xdebug.org/download.php 下载对应的xdebug的dll不知道php文件中的ext文件夹中 并且加入以下配置在php.info 然后重启apche zend_ext ...
- (剑指Offer)面试题52:构建乘积数组
题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不能 ...
- 关于为什么要在项目中使用FTP文件服务器
传统的上传一般做法是http上传,后台接收文件流,然后写入到服务器本地硬盘的某个位置. 如果我们想把文件单独存放在别的服务器上,那就可以借助ftp服务器了. 上传的流程则变为,http上传,后台接收文 ...
- putty(winscp)无法连接到linux(ubuntu)
为了能在自己笔记本电脑上兼容公司的用64位系统编译出来的MapReduce程序,我把自己原来32位的ubuntu虚拟机删除后,安装了目前最新的ubuntu-14.04.2-desktop-amd64. ...
- MSSQL排序规则冲突
更改表字段排序规则 ALTER TABLE 表名 ALTER COLUMN 字段名 数据类型(长度) COLLATE 排列规则