C++中const修饰基本数据类型、指针、引用、对象
const修饰基本数据类型
#include <iostream>
using namespace std; void main(){
const int a = 1;
const char b = 'k';
const float c = 3.14f;
//a = 2;
//b = 'n';
//c = 1.2f;
}
const修饰基本类型表示这些类型为常量,不能再修改或赋值。还有需要注意的是3.14默认为double类型,如果用float变量保存的话应该写成float c = 3.14f。
const修饰指针
#include <iostream>
using namespace std; void main(){
int a = 0;
int b = 0;
int c = 0;
int d = 0;
const int *p1 =&a; //指向整形常量的可变指针
int const * p2 =&b; //指向整形常量的可变指针
int * const p3 =&c; //指向可变整形的常指针
const int * const p4 =&d; //指向整形常量的常指针
}
p1所指向的内容为整型常量,所以*p1=2;是错误的。但可以进行p1++这样的操作,也可改变p1的指向
const修饰引用
很多同学跟我一样爱钻牛角尖将const修饰引用与const修饰指针进行对比,是不是const修饰引用也有修饰指针时的四种情况呢?
#include <iostream>
using namespace std; void main(){
int a1 = 1;
int a2 = 1;
int a3 = 1;
int a4 = 1;
const int & b1 = a1;
int const & b2 = a2;
int & const b3 = a3; //提示“qualifiers on reference are ignored”
const int & const b4 = a4; //提示“qualifiers on reference are ignored”
}
const int & b1 = a1; 则b1是常量b1++、b1=2都是不可以的,虽然b1是a1的一个别名,但是不能通过b1来修改a1。但是a1不是常量,可以a1=2,b1的值也会跟着改变。
const修饰对象
#include <iostream>
using namespace std; class A {
private:
int i;
public:
A(){ i = 0; }
void set(int n){
i = n;
}
void get() const {
cout<<"成员变量的值:"<<i<<endl;
}
};
void main(){
const A a;
//a.set(1);
//a.get();
}
定义一个const对象,const对象企图调用set函数改变成员变量的值,这是不允许的。const对象顾名思义为常对象,所有对象的成员变量不可变。而且const对象也不能调用非const函数,哪怕set函数没有修改成员变量,编译也会出错。而get函数为const函数,所以const对象可以调用get函数。
C++中const修饰基本数据类型、指针、引用、对象的更多相关文章
- C/C++ 中 const 修饰符用法总结
C/C++ 中 const 修饰符用法总结 在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家 ...
- [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结
在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家梳理一下知识,给大家一点点帮助.作者是菜鸟一 ...
- 转载----C/C++ 中 const 修饰符用法总结
感谢原创作者,写的好详细.不忍错过,所以转载过来了... 原文地址: https://www.cnblogs.com/icemoon1987/p/3320326.html 在这篇文章中,我总结了一些C ...
- const修饰的双重指针赋值解惑
在c程序中,我们可能经常会使用到指针之间的赋值. 传统的赋值操作: char *cp = "c"; const char *ccp; ccp = cp; printf(" ...
- C++中使用const修饰指针
在本文中呢,主要讲解四个方面,即:常量数据的与否和常量指针的与否中const如何对指针进行修饰: 1.指向非常量数据的常量指针 对于一个指向非常量数据的常量指针,我们应该清楚的知道,在这我们注重的是指 ...
- const修饰指针的三种效果
当用const进行修饰时,根据const位置的不同有三种不同效果. 判断的标准是:const修饰谁,谁的内容就是不可变的. 1 const int *p = &a; const修饰*p, *p ...
- const修饰的常量 不能被直接修改 但是可以通过指针进行间接修改
大家都知道如下代码中,被const限定的a是不可以被直接修改的 void main() { const int a = 3; a=1; } 在C++中const修饰的常量,不能被直接修改,但是可以通过 ...
- C++ --const修饰指针
const修饰指针 1.const修饰指针 (常量指针)常量的指针 const int *p = &a; const修饰的是*p(表示内容为常量),不是p(指针) 指针指向的地址可以改,但指针 ...
- C++中const 的各种用法
C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...
随机推荐
- Linux下修改网卡IP、DNS和网关
Linux下修改网卡IP和网关 建议通过终端字符方式下来修改 一.修改IP地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOO ...
- 应用之星推出“图文app”制作工具,并附上教程
应用之星已推出的"图文"app制作工具,是高速制作图文电子书,图文杂志等一切有关图文资料的app生成工具,以下跟大家介绍"图文"制作教程,简单快捷,大致分三大步 ...
- oracle之单行函数
单行函数 ①.字符函数 LOWER(x):将x中的每一个单词都转换成小写 UPPER(x):将x中的每一个单词都转换成大写 INITCAP(x): 将x中的每一个单词的首字母转换成大写 CONC ...
- C#_delegate - Pair<T> & 简单顺序逆序 & 方法委托(在Pair类下)&枚举类型 混搭使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- How to Use Custom TTF Font on iOS
Cocos2d-x uses FontLabel to draw customer ttf font before v2.0.3(including v2.0.3). Now it uses UIFo ...
- Apache rewrite 详解
用rewrite可实现的部分:URL根目录搬迁,多目录查找资源,阻止盗连你的图片,拒绝某些主机访问,基于时间重写,据浏览器类型重写,动态镜像远程资源,外部重写程序模板,等等 详见下表: 目标 重写设置 ...
- 动态修改 C 语言函数的实现
Objective-C 作为基于 Runtime 的语言,它有非常强大的动态特性,可以在运行期间自省.进行方法调剂.为类增加属性.修改消息转发链路,在代码运行期间通过 Runtime 几乎可以修改 O ...
- Service的启动与停止、绑定与解绑
---恢复内容开始--- Service的意义就在于当软件停止之后还可以在背景中进行运行,换句话也就是说,比如一个音乐播放器,当我们退出音乐播放器的时候,还是希望它在背景中运行,也就是一直播放着音乐, ...
- Android_Intent_data_type
layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- About gpref O(n2) --> O(1)
http://www.ibm.com/developerworks/cn/linux/l-gperf.html 命令行处理和 gperf 的作用 命令行处理一直以来都是软件开发中最容易被忽视的领域.几 ...