C++中const的运用

(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
  (2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
  (3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
  (4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
  (5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。例如:
const classA operator*(const classA& a1,const classA& a2);
  operator*的返回结果必须是一个const对象。如果不是,这样的变态代码也不会编译出错:

classA a, b, c;
(a * b) = c; // 对a*b的结果赋值
  操作(a * b) = c显然不符合编程者的初衷,也没有任何意义。

时间: 2024-08-31 04:35:45

C++中const的运用的相关文章

类中const函数的返回值问题

问题描述 类中const函数的返回值问题 我写了一个matrix类,其中定义了一个二维指针int **p用来表示这个矩阵,现在我需要些一个下标操作符的重载,但是他会报错. const int *&matrix::operator const { return p[n]; } 这个函数返回一个一维指针引用.但是我不知道错在哪儿了. 但是如果把返回引用改成返回一维指针本身,也就是如下所示,就没问题了.为什么呢??哪个大神来解释下. const int *matrix::operator const

标准-c++ 中 const 问题

问题描述 c++ 中 const 问题 const修饰成员函数体,数据成员不能够被改变, 为什么?标准是如何实现的,或者说是为什么就不能够被改变? 解决方案 语法上的需要.从面向对象的角度说,我们需要通过限制方法对对象状态的访问实现封装性,在C++语言中,我们通过给函数修饰const实现这一点.具体如何检查,这是编译器的事情. 解决方案二: C++的const_cast的问题C++中的const的内存分配问题C++ const相关问题 CV限定问题 解决方案三: 编译器检查修饰符来判断. 解决方

C++中const用法小结_C 语言

const在C++中使用十分广泛,不同位置使用的意义也不尽相同,所以想写篇文章对其做一个总结. 首先,明确const是"不变"这个基本意义,但是不变不意味着什么都不变,下面将会看到. 1. const与变量 基本原则:const变量(对象)不能被修改 const在变量中的引入和魔数有关,所谓"魔数"指的是突然出现的一个常量值(也叫字面值常量). for(int i = 0; i < 512; i++) { // todo } 上例中,512即为魔数,512突然

新手求解答一下-const求解catch函数中const的作用

问题描述 const求解catch函数中const的作用 try{.......throw i;} catch(const int i)中const的作用是什么具体是什么 解决方案 const int i 这里不允许修改i.

link中const和readonly对于变量的影响有什么不同?

问题描述 link中const和readonly对于变量的影响有什么不同? link中const和readonly对于变量的影响有什么不同? 解决方案 const是编译器硬编码进去的,没有符号. readonly则是保留符号的,可以通过反射查询. const因为是硬编码的,所以一旦程序修改了,那么和直接的程序二进制就不兼容了.最好不要用const 解决方案二: 在多个类实例时有差别的: const 在所有的实例中值都相等: readonly 可以在类的构造函数中初始化,不同实例之间取值可以不等.

c#中const与readonly区别

原文:c#中const与readonly区别 const 的概念就是一个包含不能修改的值的变量.常数表达式是在编译时可被完全计算的表达式.因此不能从一个变量中提取的值来初始化常量.如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的. readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值.因为 readonly 是在计算时执行的,当然它可以用某些变量初始化.readonly 是实例成员,所以不同的实例

C#中const 和 readonly 修饰符的用法详解_C#教程

1. 只有C#内置类型(int,double,long等)可以声明为const;结果.类和数组不能声明为const. 2. readonly 是在字段上使用的修饰符,直接以类名.字段访问. 3. const 必须在申明中初始化.之后不能再修改. 4. readonly可以在申明中初始化,也可以在构造函数中初始化,其它情况不能修改. namespace const_and_readonly { class Program { static void Main(string[] args) { Co

C++中const的实现机制深入分析_C 语言

问题 C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢? 本文将对这两个问题进行一些分析,简单解释const的含义以及实现机制. 问题分析 简单的说const在C语言中表示只读的变量,而在C++语言中表示常量.关于const在C与C++语言中的使用以及更多的区别,以后有时间另开一贴说明. 那么const究竟是如何实现的呢? 对于声明为const的内置类型,例如int,short,long等等,编译器会如何实现const的本意?那么对于非内置类型是否也是与内置数据类

C#中 const 和 readonly 的区别

ado|区别 const 和 readonly 的区别,总是不太清楚,于是查了查资料.   const 的概念就是一个包含不能修改的值的变量.常数表达式是在编译时可被完全计算的表达式.因此不能从一个变量中提取的值来初始化常量.如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的.   readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值.因为 readonly 是在计算时执行的,当然它可以用某些变量初

C++中const用法详解

面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重 const 1.限定符声明变量只能被读 const int i=5: int j=0: -- i=j: //非法,导致编译错误 j=i: //合法 2.必须初始化 const int i=5: //合法 const int j: //非法,导致编译错误 3.在另一连接文件中引用const常量 extern const int i: //