首页 > 编程语言 >C++ 类和对象: const关键字

C++ 类和对象: const关键字

时间:2023-05-10 15:46:01浏览次数:28  
标签:const 变量 C++ 关键字 修饰 指针

1. const 关键字

在C语言中, const关键字用来修饰变量, 表示变量的值不能被修改

在C++中, const可以修饰变量, 也可以用来修饰对象和类成员变量

下面先来看一下, const 修饰对象

使用const修饰的对象d1, 调用成员函数报错, 这是为什么?

那么只要把this指针类型改为 const Date*, 就可以解决这个问题, 但是this指针是隐藏的, 没有办法显式, 如何给this指针加const ?

C++标准规定, 可以在下图位置中给this指针加const, 表示this指针指向的内容是不能修改的

 

接下来, 说明const修饰成员变量, 如下例

如图报错, 而报错的原因是:

const 修饰的成员变量, 不能在构造函数体内赋值, 需要初始化列表中进行定义 (注: 在初始化列表中详细说明)

 

标签:const,变量,C++,关键字,修饰,指针
From: https://www.cnblogs.com/xumu11291/p/17388177.html

相关文章

  • C++ Primer学习笔记——第二章
    第二章变量和基本类型前言数据类型是程序的基础:它告诉我们数据的意义以及我们能在数据上执行的操作。2.1基本内置类型C++定义了包括算术类型(arithmetictype)和空类型(void)在内的基本数据类型。2.1.1算术类型算术类型分为两类:整型和浮点型。具体分类:类型含义最小容......
  • mysql中删除时报错Cannot truncate a table referenced in a foreign key constraint
    在Mysql使用Truncate截断表时,提示Cannottruncateatablereferencedinaforeignkeyconstraint(monitoritem,CONSTRAINTmonitortaskpollutant_monitortask_fk)。这是因为存在外键约束导致的无法删除,我们可以先关闭外键约束,删除后再启动外键约束。1、检查外键约束SELE......
  • 写C++模板函数的两种形式
    #include<iostream>template<typenameT>autof1(constT&x){std::cout<<x<<std::endl;};autof2=[](constauto&x){std::cout<<x<<std::endl;};intmain(intargc,char**argv){int......
  • const与指针的四种关系
     定义变量inta=1;constintb=2; 1.将 普通变量地址 赋给 普通指针:int*p1=a;  // 正确 2.将 const变量地址 赋给 普通指针:int*p2=b; // 错误//p2是普通指针,意味着可以通过p2修改b的值,而b为const,不可修改,造成权限冲突//如果一......
  • C++入门
    C++是面向过程也面向对象的语言,具有预处理器、预处理器指令和宏、模板、对象、封装、继承、多态的特性。1、C++程序的内存通常如何分配?解答:全局数据区:通常存储全局变量、静态数据和常量代码区:所有类成员函数和非成员函数代码栈区:执行函数时分配的局部变量、函数参数、返回......
  • C++求平均值
    #include<iostream>#include<iomanip>usingnamespacestd;intmain(){  doublea[100];doublen=0,m=0;inti=0;  doublec;  for(inti=0;i<100;i++)  {cin>>a[i];  if(a[i]==-1)break; }if(a[0]==18&&a[1]==2){cout<<&quo......
  • C++如何获取网卡地址(跨平台)
    需求:获取电脑网卡的硬件地址。就是Linux下运行ifconfig出来的硬件地址。直接上代码:windows下运行ipconfig/all 显示的物理地址。  头文件:GetMacAddrFunc.h#ifndef__DDR_GET_MAC_ADDR_FUNC_H_INCLUDED__#define__DDR_GET_MAC_ADDR_FUNC_H_INCLUDED__#......
  • C#调用C++
    一直是在写C#,最近接触到的项目中有C#调用C++接口的逻辑,自己学习了下,写个步骤日志,C#掉用C++的托管代码项目分三个项目:1、底层C++动态库项目,2、中间层的CLR项目,3、上层的C#项目1.底层C++动态库项目,1、新建一个C++动态链接库(Dll)项目,获取新建了其他的项目后在项目属性中将配置类型......
  • C# ref关键字和out关键字
    1.ref关键字     我们知道C#语言的数据类型分为值类型和引用类型,其中它们最典型的差别就是在作为方法的参数方面。值类型数据作为参数,修改形参时不会影响到实参;而引用类型数据作为参数,修改形参可以影响到实参。  但是某些情况下,传递的是值类型数据,却要求把修改的结......
  • C++标准库和模板库的区别和联系?
    C++标准库包含模板库。C++标准库由三组库构成(std::是个名称空间标识符,C++标准库中的函数或者对象都是在命名空间std中定义的):(1)C库:由C标准库扩展而来,强调结构、函数和过程,不支持面向对象技术。(2)C++库:增加了面向对象的库,包含了既有关键功能的类(3)标准模板库(STL):高效的C++程序库。该......