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 ...
随机推荐
- 一个Solr搜索实例,增删改查+高亮+分页
今天个人coding的模块测试,所以闲暇之余继续研究solr,然后顺带写了一个实例,随便搞的,solr真心不熟,期待认识热爱搜索的朋友,共同进步. 1.配置schema.xml文件[solr\coll ...
- nginx rewrite 参数和例子
http://www.cnblogs.com/analyzer/articles/1377684.html ] 本位转自:http://blog.c1gstudio.com/archives/434 ...
- oracle中对LONG列进行查询
SQL> CREATE TABLE T_LONG (ID NUMBER, LONG_COL LONG); 表已创建. SQL> INSERT INTO T_LONG VALUES (1, ...
- c++与c不太相同的一些地方1
1.c++区别与java的一个地方:C++更多的是一种规范,不同时期的不同标准,提供了不同的语法要求.所以各个厂商在对C++的支持上也做得不尽相同,比如有些语法vs就支持gcc 就支持的差一些,而某些 ...
- ORM之PetaPoco入门(一)--Petapoco简介
1. ORM概括 1.1. ORM简介 ORM 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应 ...
- Chrome&FF&Opera&下DIV不设置高度显示背景颜色和边框的办法
今天在排版的时候,外层的div不写高度的话背景颜色和边框没法办法显示,但是在IE下面就可以,这个有三个解决办法. 第一: 直接给最外层的div设置高度(不推荐). 第二: 在内部每个div后添加一个清 ...
- linux版本qq的安装
下载http://download.csdn.net/detail/gg296231363/3728117原谅我吧,1分而已,可以自己google,到处有. tar xzvf linuxqq_v1.0 ...
- C#根据WSDL文件生成WebService服务端代码
转自:http://www.cnblogs.com/liyi93/archive/2012/01/30/2332320.html 虽然现在已经进入了.NET FrameWork 4.0的时代,WebS ...
- 用js实现选项卡切换效果
这是要实现的效果图: 一.HTML页面布局 <!-- HTML页面布局 --><ul class="tab_menu"> <li class=&quo ...
- hadoop mapreduce 优化
http://www.cnblogs.com/c840136/archive/2013/03/10/2952887.html http://irwenqiang.iteye.com/blog/1535 ...