const 用法简单总结

1认识const修饰指针的情况。
int b =500;
const int*a = & [1]
int const*a = & [2]
int* consta = & [3]
const int*const a = & [4]
如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无 关),这种情况下不允许对内容进行更改操作,如不能*a = 3 .如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常 量。

2const 可以修饰函数的返回值,或某个参数;对于成员函数,还可以修饰是整个函数。
1)修饰参数的const,参数const通常用于参数为指针或引用的情况,且只能修饰输入参数;若输入参数采用“值传递”方式,由于函数将自动产生临时变量用于复制该参数,该参数本就不需要保护,所以不用const修饰。
如 void fun0(const A* a ); void fun1(const A& a);
调用函数的时候,用相应的变量初始化const常量,则在函数体中,按照const所修饰的部分进行常量化,如形参为const A* a,则不能对传递进来的指针的内容进行改变,保护了原指针所指向的内容;如形参为const A& a,则不能对传递进来的引用对象进行改变,保护了原对象的属性。
对于非内部数据类型的输入参数,因该将“值传递”的方式改为“const引用传递”,目的是为了提高效率。例如,将void Func(A a)改为void Func(const A &a)
2) 修饰返回值的const,如const A fun2( ); const A* fun3( );
一般情况下,函数的返回值为某个对象时,如果将其声明为const时,多用于操作符的重载。通常不建议用const修饰函数的返回值类型为某个对象或对某个对象引用的情况。

3)类成员函数中const的使用
一般放在函数体后,形如:void fun() const;
任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其他非const成员函数,编译器将报错,这大大提高了程序的健壮性。

3 关于const 的内存分配

const是用来替换define的,通常C++中会尽量避免为const变量分配内存storage的,而是在编译阶段将其保存在符号表symbol table中。

在C++中const变量是默认为内部链接的,即在其他文件中看不到本文件定义的const变量,因此链接不会出现问题。const变量在定义的时候必须初始化,除非显式的指定其为extern的。

当用extern修饰const变量或引用其地址时,将强制为其分配内存,因为extern表示采用外部链接,因此其必须有某个地址保存其值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
document.querySelector是一种HTML DOM API方法,用于通过选择器选择文档中的第一个匹配元素。它的用法非常简单,只需要传入一个选择器作为参数,然后它会返回文档中第一个匹配选择器的元素。 例如,如果你想通过类名选择元素,你可以使用以下代码: const firstElementWithClass = document.querySelector('.my-class'); 这将返回文档中具有类名为"my-class"的第一个元素。 除了类名选择器,你还可以使用其他类型的选择器,例如标签选择器、ID选择器、属性选择器等。 值得一提的是,querySelector只返回第一个匹配的元素。如果你想要选择所有匹配的元素,你可以使用document.querySelectorAll方法。该方法与querySelector类似,但返回的是一个节点列表,而不仅仅是一个元素。 总结起来,document.querySelector方法提供了一种简单和灵活的方式来选择文档中的元素,你可以根据需要传入不同的选择器来获取所需的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [document.querySelector()方法](https://blog.csdn.net/qq_44885775/article/details/124420956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [介绍函数用法:document.querySelector](https://blog.csdn.net/m0_57236802/article/details/130287312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值