const属性

本文介绍了C++中的const属性,包括基本原则:从右向左理解const。详细讲解了指向常量的指针(pointe to const)和常量指针(const pointer)的区别,以及const在成员函数中的应用,如const成员函数的规范和限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本原则:

  1. 从右向左读。
  2. 指向常量的指针(pointe to const):const在 * 左边,则声明指针指向的对象是常量,但指针指向的地址可以变。
  3. 常量指针(const pointer):const在 * 右边,则声明指针是常量(常指针,指针常量)。
  • 指向常量的指针:const在 * 左边,表明指向的对象是常量:
const double value = 20.0const double *ptr1 = &value;
double const *ptr2 = &value;
std::cout << "ptr1: " << ptr1 << ", *ptr1: " << *ptr1 << std::endl;                           
std::cout << "ptr2: " << ptr2 << ", *ptr2: " << *ptr2 << std::endl; 
     
double new_value = 1.0;
ptr1 = &new_value;
ptr2 = &new_value;
std::cout << "ptr1: " << ptr1 << ", *ptr1: " << *ptr1 << std::endl;                           
std::cout << "ptr2: " << ptr2 << ", *ptr2: " << *ptr2 << std::endl; 

输出:

ptr1: 0x7ffc844d8754, *ptr1: 20
ptr2: 0x7ffc844d8754, *ptr2: 20
ptr1: 0x7ffc844d8758, *ptr1: 1
ptr2: 0x7ffc844d8758, *ptr2: 1

ptr: 0x7ffc844d8754, *ptr: 20
ptr2: 0x7ffc844d8754, *ptr2: 20
ptr: 0x7ffc844d8758, *ptr: 1
ptr2: 0x7ffc844d8758, *ptr2: 1
  • 常量指针:const 在 * 后修饰指针则表明此指针是常量,地址不可变,值可变。
   int val = 10;                                                                          
   const int cval = 100;                                                                  
   int *const cptr = &val;                                                                
   std::cout << "val: " << val << ", cval: " << cval << ", cptr:" << cptr << ", cptr value:" << *cptr << std::endl;
   *cptr = 11;                                                                            
   std::cout << "val: " << val << ", cval: " << cval << ", cptr:" << cptr << ", cptr value:" << *cptr << std::endl;

输出

val: 10, cval: 100, cptr:0x7ffdcb88a668, cptr value:10
val: 11, cval: 100, cptr:0x7ffdcb88a668, cptr value:11
  • 指向常量的常指针,指针地址不可变,指向的值不可变。
const float cval = 20.0;
const float *const fcptrc = &cval;

类中的const相关

  1. const 成员函数规范:  <类型说明符> <函数名> (<参数表>) const;
    i.const成员函数内不得修改成员变量。
    ii.const成员函数内不得调用非const成员函数。
    iii.只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值