[c++ Primer中文版]----day 5

mac2026-08-25  0

学习笔记

1.const引用可以指向三类对象

非const对象const对象字面值常量

(上述三种对象,都没有必要和const引用是同一种类型,编译器会自动帮助其转换数据类型)

非const引用指向对象

同类型的非const对象

2. 头文件中const对象的定义

头文件不允许定义,但存在三种定义例外,类的定义、inline函数定义、const对象定义(仅支持const对象的常量表达式定义)。

在头文件中,使用常量表达式来定义const对象后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。但这并不是说每个源文件都访问同一地址下的const对象,也不是说每个源文件都各自分配了const对象的存储空间。与之相反,在编译时,编译器都会用相应的常量表达式来替换这些const变量,即不会有任何存储空间用于存储用常量表达式初始化的const变量

例如在"example.h"存在如下定义:

const int a = 4;

而在main.cc使用该变量

#include "example.h" int main() { int b = a;//在编译时等于int b = 4,不需要访问某个存储地址来获得4的值 }

3.头文件避免多重包含 比如在main.cc源程序中包含了两个库,若其中Sales_item.h也包含了<iostream>,则在编译main.cc时相当于包含了两次<iostream>,则<iostream>中定义的类和对象也会被定义两次,这和“定义只能有一次”相违背。

#include <iostream> #include "Sales_item.h"

为了避免这个问题,c++使用了预处理名来检测是否存在多重包含。

#ifndef 预处理名 #define 预处理名 //类和操作的定义 #endif

待解决

1.如何理解“头文件用于声明而不是用于定义”?---page59

最新回复(0)