1.不能将const修饰的任何对象、引用和指针作为赋值表达式的左值。
const int cx=100;
const int & rcx=cx;
const int * pcx=&cx;
cx=200; //error
rcx=200; //error
*pcx=200; //error
2.const类型的对象不能直接被non-const类型的别名所引用。
(1)不能将const类型的对象传递给non-const类型的引用。
const int cx=100;
int & rx=cx; //error
(2)不能将const类型的实参传递给形参为non-const类型引用的函数。
void f(int a)
{
}
void g(int & ra)
{
}
const int cx=100;
f(cx); //ok
g(cx); //error
(3)不能将const类型的对象作为non-const类型引用的函数返回值。
int & f(const int & rca)
{
return rca; //error
}
int x=100;
f(x);
3.可以使用const类型别名引用non-const对象。此时通过const引用不能修改对象,但对象可以通过non-const引用被修改。
int x=100;
int & rx=x;
const int & rcx=x; //ok
x=200;
rx=200;
rcx=200; //error
4.指针的属性有两个:指针的类型和指针本身的常量性。
<1>const int *r=&x; //声明r为一个指向常量的x的指针,r指向的对象不能被修改,但他可以指向任何地址的常量
<2.> int const *r=&x; //与用法<1>完全等价,没有任何区别
<3.> int * const r=&x; //声明r为一个常量指针,他指向x,r这个指针的指向不能被修改,但他指向的地址的内容可以修改
<4.> const int * const r=&x; //综合<1>、<3>用法,r是一个指向常量的常量型指针
5.可以将相同类型(包括常量性)的const指针值赋给non-const指针。
int x=100;
int * px;
const int * pcx=&x;
px=pcx; //error
int * const cpx=&x;
px=cpx; //ok
6.若函数的返回值为内建类型或是指针,则该返回值自动成为const性质。但自定义类型则为non-const性质。
int f() //相当于返回const int
{
return 100;
}
int * g(int & ra) //相当于返回int * const
{
return &ra;
}
class CTest
{
int n;
public:
CTest(int n){this->n=n;}
};
CTest h() //返回的就是CTest
{
return CTest(200);
}
f()=200; //error
int x=100;
int y=200;
int * px=&x;
g(y)=px; //error
*g(y)=x; //ok,从这点可以看出g()返回的不是const int *
CTest t(100);
h()=t; //ok,但却是完全错误的、危险的做法
//所以h()的正确写法是返回const CTest
分享到:
相关推荐
源实现参考网络资源;基于源实现解决了其重入问题。 语言环境:c++14 测试环境:在VS2019、ubuntu(wsl) g++(理论上支持c++14的都可以)
### C++常量与变量的区别以及变量的使用 #### 一、引言 在学习编程语言的过程中,理解和掌握常量与变量的概念是非常重要的。本文档将深入探讨C++中的常量与变量的区别,并通过实际代码示例来展示如何正确地使用...
"C++常量与变量基本知识" C++是一种面向对象的编程语言,它的核心基础是变量和常量。本篇文章将对C++中的变量和常量进行浅析介绍。 变量是存储数据的值的空间,由于数值的类型有多种,有整数、小数(浮点数)、...
0706_极智开发_解读C++常量指针和指针常量
C++常量详解二(常量形参、常量返回值、常量成员函数) C++ 中的常量是指在编译期确定的值,它们不能被改变。在本篇文章中,我们将深入探讨 C++ 常量的三个方面:常量形参、常量返回值和常量成员函数。 1.常量形参...
c++常量详解 常量是存放固定且不可变值的,一旦确定初始值则在程序其它地方不可改变,所 以const对象必须初始化。常量一般使用const关键字来修饰。在C++中,常量可以大致分为三类: 1. 对象常量:const int a = 10...
上一节我们介绍了变量,它是一种存储在电脑内存里,在程序中可以改变的数据。然而,有时候我们还会遇到一些数据,它们在程序中不应该被改变。比如圆周率π就应该等于3.14151926……,一年就应该是12个月,在程序中不...
在C++编程语言中,常量引用是一种特殊类型的引用,它在声明时被绑定到一个不可修改的对象。常量引用的引入主要是为了提高程序的安全性和效率。本文将深入探讨C++中的常量引用,包括其定义、作用、使用场景以及与普通...
在C++中,常量引用是一个非常重要的概念,它在编程中扮演着关键角色。本文将深入探讨C++中的常量引用,帮助初学者理解其基本原理和用法。 首先,我们需要了解什么是引用。引用在C++中是一种别名机制,它就像是变量...
C++ 中的常量成员常量返回值详解,需要在构造函数列表中给出,常量数据成员不能赋值,常量成员函数不能修改类数据成员,返回常量的函数可以是常量指针、指针常量、常量,普通类型的返回常量的函数目的是防止产生丑陋...
我们已经在前面学习了变量,并且能够熟练的使用它。可是,仅仅靠这些知识,有些问题仍然无法得到解决。
### C_C++中的指针常量与常量指针详解 #### 一、定义与基本概念 在C/C++编程语言中,指针是一个非常重要的概念,它允许程序员直接访问和操作内存地址。而在指针的基础上,衍生出了两种特殊的指针类型——**指针...
在C++编程语言中,常量是一个非常重要的概念,它用于定义不可更改的值。本文将深入探讨常量指针和常量引用的初始化,帮助理解这两种特殊的常量形式。 首先,我们需要明白常量(const)的基本用法。常量在声明时必须...
vscode配色插件的c/c++语法高亮配置文件,主题插件为C/C++ Themes。 可以对诸如const、enum、typedef别名、结构体引用等语法高亮进行设置,语言本身的关键字自然不用说了,比one dark pro等热门的插件颜色丰富的多。...
总结来说,理解并熟练掌握C++中的指针常量和常量指针对于编写高效、可靠的代码至关重要。它们允许我们在编程时对指针的行为进行精确控制,防止不必要的数据修改,提升代码的安全性。通过合理使用指针常量和常量指针...
5. C++常量指针 在C++中,const符号可以用来修饰指针和指针所指向的变量。如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即...