C++const用法的总结

1.const关键字

常类型是指,使用const修饰的类型,常类型的变量或对象的值是不能被更新的。 在定义的时候就要初始化初值,如:const int b = 10;

1)指针所指向的内存空间,不能被修改

int  operatorTeacher01(const Teacher *pT)
{
	//pT->age = 10;
	return 0;
}

2)指针变量本身不能被修改

int  operatorTeacher02( Teacher * const pT)
{
	pT->age = 10;
	//pT = NULL; //
	return 0;
}

3)指针所指向的内存空间和指针变量本身都不能被修改

int  operatorTeacher03( const Teacher * const pT)
{
	//pT->age = 10;
	//pT = NULL; //
	printf("age:%d", pT->age);
	return 0;
}

2.C语言const和c++const的区别

a.语言中的const是一个冒牌货
b.C++语言中 const是一个真正的常量
原因分析

//const int b = 10; 符号表
void main82()
{
	//好像 a 是一个常量
	const int a = 10;
	//a = 11;
	int *p = NULL;
	p = (int *)&a;

	*p = 20;  //间接赋值 
//在C里面*p会被修改成功,在C++里是不会修改成的
	printf("a:%d \n", a);
	printf("*p:%d \n", *p);
	system("pause");
}

3.修饰函数返回值

  const int fun1()
  const int* fun2()
  const int& fun3()

这种用得不是很多,作用类似于修饰变量,返回一个const型的变量

4.修饰类对象/指针/引用

  const classA a;
  const classB* b;
  const classC& c;

(1)不能改变对象的任何成员变量
(2)不能调用任何非const成员函数

5.修饰类成员变量

(1)不能被修改
(2)只能在类初始化列表中被赋值

小总结:只能在类初始化列表中被赋值的情况:

(1)const成员变量
(2)引用变量
(3)基类构造函数

6.修饰类成员函数

 void fun() const;

(1)不能修改类的任何非静态数据成员(可以修改静态数据成员);

(2)不能调用类的任何非const函数(可以调用const成员函数)。

7.const常量与define宏定义的区别

(1) 编译器处理方式不同

define宏是在预编译阶段展开。

const常量是编译运行阶段使用。

(2) 类型和安全检查不同

define宏没有类型,不做任何类型检查,仅仅是展开。

const常量有具体的类型,在编译阶段会执行类型检查。

(3) 存储方式不同

define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。

const常量会在内存中分配(可以是堆中也可以是栈中)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值