重学c++primer(6)

重写c++ primer(6)

const 限定符:

我们希望定义这样一种变量,它的值不能被改变。还有我们有时候要防止改变某一个值。所以为了满足这个要求,我可以用const限定符加以限定。比如:

const int bufsize=512;
这样就把bufsize定义成了一个变量,任何试图为bufsize赋值的行为都将引发错误。如:

bufsize=512;//试图向const对象写值

因为const对象一旦创建后其值就不能改变。所以const对象必须初始化。

const int i=get_size();
const int j=42;

比如以上表达式就是正确的范例,还有:

const int k;

像这样没有给予初始化的表达式往往会导致编译错误。

初始化和const

关于初始化,如果利用一个对象去初始化另外一个对象,则他们是不是const都无关紧要。:

int i=42;
const int ci=i;
int j=ci;

在上述表达式中,i的值被赋值给了ci,ci的值被赋值给了j。可见这与const没有关系。

默认情况下,const对象仅在文件内有效。当多个文件中出现了同名的const变量时,其实等同于在不同文件中分别定义了独立的变量。通常只在一个文件中定义const,而在其他多个文件中声明并使用它。

对于const变量不管是声明还是定义都添加extern关键字。这样只需定义一次就够了。

extern const int bufsize=fun();
extern const int bufsize;
下面是关于const 引用的。

可以把引用绑定到const对象上,就像绑定在其他对象上一样。我们称为对常量的引用。与普通引用不同的是。对常量的引用不能被修改它所绑定的对象。

const int ci=1024;
const int &rl=ci;//引用及其对象都是常量。
rl=42;//错误,rl是对常量的引用。
int &rl=ci;//试图让一个非常量引用指向一个常量引用。

初始化和对const的引用

引用的类型必须与其所引用的对象的类型一致。但有两个情况。第一,在初始化常量引用时,容许用任意表达式作为初值,只要改表达式的结果能转换成引用类型即可。容许为一个常量引用绑定一个非常量对象,字面值。

int i=42;
const int &rl=i;
const int &r2=42;
const int &r3=rl*2;

rl和r3都是引用常量。

对于const的引用可能引用一个并非const的对象,常量引用仅对引用可参与的操作做出了限定,对于引用的对象本身是一个常量未做限定。因为对象可能是一个非常量。所以可以通过其他途径改变。

int i=42;
int &rl=i;
const int &r2=i;
rl=0;



指针与const

与引用一样,也 可以令指针指向常量或非常量。类似于常量引用,指向指针常量的指针不能用于改变其所指对象。要想存放对象的地址,只能使用指向指针常量的指针。

const指针

指针是对象而引用不是,容许把指针本身定义为常量。常量指针必须初始化。而且一旦初始化完成,则它的值就不能被改变了、比如:

int errnumb=0;
int *const curerr=&errnumb;
const double pl=3.14;
const double *const pip=π

指针本身是一个常量并不意味着不能通过指针修改其所指的值。能否这样做依赖于所指对象的类型。

简单总结一下顶层和底层const。

顶层const是指指针本身是一个常量。而底层const是指指针所指对象是一个常量。

当执行拷贝时并不会改变被拷贝对象的值。顶层const不受影响。另外底层const限制不能忽视。当执行拷贝时。拷入和烤出的对象必须为相同的底层const'资格。或者两个对象的数据类型能转换。通常,非常量可以换为常量。反之不行。


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生就业服务平台管理系统按照操作主体分为管理员和用户。管理员的功能包括生档案管理、字典管理、试卷管理、试卷选题管理、试题表管理、考试记录表管理、答题详情表管理、错题表管理、法律法规管理、法律法规收藏管理、法律法规留言管理、就业分析管理、论坛管理、企业管理、简历管理、老师管理、简历投递管理、新闻资讯管理、新闻资讯收藏管理、新闻资讯留言管理、生信息管理、宣传管理、生管理、职位招聘管理、职位收藏管理、招聘咨询管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大生就业服务平台管理系统可以提高大生就业服务平台信息管理问题的解决效率,优化大生就业服务平台信息处理流程,保证大生就业服务平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理新闻信息,管理大生就业服务平台信息,包括考试管理,培训管理,投递管理,薪资管理等,可以管理新闻信息。 考试管理界面,管理员在考试管理界面中可以对界面中显示,可以对考试信息的考试状态进行查看,可以添加新的考试信息等。投递管理界面,管理员在投递管理界面中查看投递种类信息,投递描述信息,新增投递信息等。新闻信息管理界面,管理员在新闻信息管理界面中新增新闻信息,可以删除新闻信息。新闻信息类型管理界面,管理员在新闻信息类型管理界面查看新闻信息的工作状态,可以对新闻信息的数据进行导出,可以添加新新闻信息的信息,可以编辑新闻信息信息,删除新闻信息信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值