[C++ Primer] 变量和基本类型

news/2024/10/2 3:20:14

[C++ Primer] 变量和基本类型

变量

  1. 默认初始化

    如果定义变量时没有指定初值,则变量默认初始化,此时变量被赋予“默认值”。默认值到底是什么由变量类型决定,同时定义变量的位置也会对此有影响。

    内置类型:其默认值由定义的位置决定。定义于任何函数之外的变量被初始化为0。

    绝大多数类都支持无须显示初始化而定义对象,这样的类提供一个合适的默认值,比如string类若没指定初值则生成空串。

const 限定符

  1. 顶层const:可以表示任意的对象是常量,对任何数据类型都适用;
    底层const:与指针和引用等复合数据类型的基本类型部分有关。
int i = 0;
int *const p1 = &i;		// 不能改变p1,顶层const
const int ci = 42;		// 不能改变ci,顶层const
const int *p2 = &ci;	// 允许改变p2,底层const
const int *const p3 = p2;//右边的const是顶层const,左边的是底层const
const int &r = ci;		// 用于声明引用的const都是底层const
  1. 常量表达式:是指值不会改变并且在编译过程就能得到计算结果的表达式。

    const int max_files = 20;	// max_files是常量表达式
    int i = 7;					// i不是常量表达式,值会改变
    const int sz = get_size();	// sz不是常量表达式,运行时才能得到sz具体值
    

处理类型

  1. 类型别名的两种定义方法:

    • 关键字typedef

      typedef double wages;	// wages是double的同义词
      typedef wages base, *p;	// base是double的同义词,p是double*的同义词
      

      关键字typedef作为声明语句中的基本数据类型的一部分出现

    • 别名声明using

      using SI = Sales_item;
      
  2. auto类型说明符:让编译器替我们分析表达式所属的类型

    auto item = val1+val2;	// item初始化为val1和val2相加的结果
    
  3. decltype类型指示符:选择并返回操作数的数据类型,编译器分析表达式并得到它的类型,却不实际计算表达式的值

    decltype(f()) sum = x;	// sum的类型就是函数f的返回类型
    

    decltype((variable))(双层括号)的结果永远是引用,而decltype(variable)结果只有当variable本身就是一个引用时才是引用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44872.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

jmeter【配置元件】-【用户定义的变量】与【前置处理器】-【用户参数】变量重复时,引用哪个值?

引用前置处理器中的【用户参数】 原因: 1.线程组下的用户参数优先级>测试计划中的用户定义的变量 2.取样器(http请求)下的用户参数优先级>线程组下的用户参数优先级 当某个取样器设置了用户参数时,会优先使用该取样器下的用户参数,因为配置元件一般在测试计划开始之…

D365 onebox 开发环境证书到期处理过程

到期证书指纹 76338006924d8bbb7f2f28638ec5d41eb5d21a70克隆命令 此处需使用Windows PowerShell Set-Location -Path "cert:\LocalMachine\My" $OldCert = (Get-ChildItem -Path 76338006924d8bbb7f2f28638ec5d41eb5d21a70) New-SelfSignedCertificate -CloneCert $…

vue3 ref()和reactive()

vue3 ref()和reactive() 能在改变时触发更新的状态被称作是响应式的。 reactive()与ref() reactive() 只适用于对象 (包括数组和内置类型,如 Map 和 Set)。而另一个 API ref() 则可以接受任何值类型。ref 会返回一个包裹对象,并在 .value 属性下暴露内部值。 <script set…

前端微服务架构qiankun初体验

一、背景‘熵增’问题一直是所有软件开发中都会遇到的问题,不管是前端还是后端都会遇到,老的系统在需求不断变更或者迭代,代码量会越来越大,最终都会形成一座‘屎山’, 今天主要讨论前端对于这种情况的解决方案。目前前端的解决方案有比较古老的iframe,但是iframe是完全隔…

网络世界的脊柱——OSI七层模型

简介 OSI代表开放系统互联(Open Systems Interconnection),这是国际标准化组织(ISO)提出的一个概念模型,用于描述网络通信的功能划分。简单来说,OSI模型把复杂的网络通信过程分成了七个不同的层次,每一层都有其特定的功能和角色。每一层都有自己的头数据,在封装和解封…

以 ZGC 为例,谈一谈 JVM 是如何实现 Reference 语义的

本文基于 OpenJDK17 进行讨论1. Reference 相关概念及其应用场景总览 Reference(引用)是 JVM 中非常核心且重要的一个概念,垃圾回收器判断一个对象存活与否都是围绕着这个 Reference 来的,JVM 将 Reference 又细分为几种具体的引用类型,它们分别是:StrongReference,Soft…

龙哥量化:通达信筹码周月副图+选股指标筹码类源码

如果您需要代写公式, 请联系我。 龙哥QQ:591438821 龙哥微信:Long622889 筹码周月副图 周R:"RSI.RSI1#WEEK"; 月R:"RSI.RSI1#MONTH"; N1:=6; LC:=REF(CLOSE,1); RSI1:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100; 全套牢1:=COST(0.01); 全…