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++常量引用.zip
c c++常量引用_
这个示例程序演示了常量和变量的使用。首先,我们定义了一个常量"MAX_VALUE",其值为100,并使用变量"age"存储一个整数。然后,我们输出常量和变量...希望这份文档对你理解C++常量与变量的区别以及变量的使用有所帮助!
主要介绍了C++常量详解二(常量形参,常量返回值,常量成员函数),需要的朋友可以参考下
上一节我们介绍了变量,它是一种存储在电脑内存里,在程序中可以改变的数据。然而,有时候我们还会遇到一些数据,它们在程序中不应该被改变。比如圆周率π就应该等于3.14151926……,一年就应该是12个月,在程序中不...
主要介绍了C++ 常量成员常量返回值详解,需要的朋友可以参考下
c++基本知识的介绍,主要是变量与常量。这里只是简单的简介。
我们已经在前面学习了变量,并且能够熟练的使用它。可是,仅仅靠这些知识,有些问题仍然无法得到解决。
主要介绍了C++常量详解一(常量指针与常量引用的初始化),需要的朋友可以参考下
常量是存放固定且不可变值的,一旦确定初始值则在程序其它地方不可改变, 所以const对象必须初始化。常量一般使用const关键字来修饰
常量指针是指--指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量。
vscode配色插件的c/c++语法高亮配置文件,主题插件为C/C++ Themes。 可以对诸如const、enum、typedef别名、结构体引用等语法高亮进行设置,语言本身的关键字自然不用说了,比one dark pro等热门的插件颜色丰富的多。...
C++语言99个常见编程错误.pdf 也是一本经典书了
c++之第七常量c++之第七常量c++之第七常量c++之第七常量c++之第七常量
C++ 常量表达式 常量值是指不会更改的值。C + + 提供了两个关键字,它们使你能够表达不打算修改对象的意图,还可让你实现该意图。 C++ 需要常量表达式(计算结果为常量的表达式)以便声明: 数组边界 case 语句中...
里我们来简单总结C++中指针常量与常量指针的区别,包括如何声明和使用常量指针以及指针常量,需要的朋友可以参考下