社区
C++ 语言
帖子详情
C++中const的连接特性
jadeinsea
2003-08-25 09:24:08
我理解是否正确:“在C++中,普通变量或对象默认的连接方式为内部连接,所以在其他文件中引用时候要用extern声明;而函数一般是外部连接(除inline、const外)”
上面的理解对吗?
...全文
82
6
打赏
收藏
C++中const的连接特性
我理解是否正确:“在C++中,普通变量或对象默认的连接方式为内部连接,所以在其他文件中引用时候要用extern声明;而函数一般是外部连接(除inline、const外)” 上面的理解对吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jadeinsea
2003-08-25
打赏
举报
回复
问题1:为什么复杂的结构必须必须分配内存,分配内存为什么就会阻止常量折叠?
const int i;
const int j = i + 1;
long address = (long) &j; //语句3
语句3不也为j分配了内存吗,怎么就不会阻止常量折叠啊?
问题2:“众多的const在多个cpp文件内分配存储,容易引起连接错误”,当引用const的文件用extern声明时,不也照样可以连接吗?这就不会引起连接错误吗?
jadeinsea
2003-08-25
打赏
举报
回复
编程思想中的这段话:
“绝对不为任何const分配存储是不可能的,尤其对于复杂的结构。这种情况下,编译器建立存储,这会阻止常量折叠。这(有时会给常量分配内存)就是const为什么必须默认内部连接,即连接仅在特别编译单元内的原因;否则,由于众多的const在多个cpp文件内分配存储,容易引起连接错误,连接程序在多个对象文件里看到同样的定义就会“抱怨”了(发现同名的厂量)。然而,因为const默认内部连接,所以连接程序不会跨过编译单元连接那些定义,因此不会有冲突。”
wbh0360
2003-08-25
打赏
举报
回复
应该可以这么理解!
jadeinsea
2003-08-25
打赏
举报
回复
如果正确的话。
如何理解C++编程思想中的这句话(P125)“C++中的const默认为内部连接,也就是说,const仅在const被定义过的文件里才是可见的,而在连接时不能被其他编译单元看到”,并以引用其他文件中的一个变量为例,需要事先用const声明。
我觉得这句话和举例总有点蹩脚。应该举个函数的例子,而不是变量的例子,因为变量都是外部连接啊,而函数一般是外部连接。我这样理解对吗?
shawnshine
2003-08-25
打赏
举报
回复
我看这部分也有个不明白,顺便在这里问了,这段话的意思是什么呢?如果我在多个cpp里面都要用到几个固定的常量,我把它的定义写在一个头文件里面(即不加extern),然后多个cpp里面都include它,这样它会自动进行常量折叠吗?我的担心是这样做会不会造成多个编译单元都含有重复的对该const的内存分配?
jadeinsea
2003-08-25
打赏
举报
回复
没人知道?
Nodejs详解
可以毫无问题地使用新的 ECMAScript 标准,因为不必等待所有用户更新其浏览器,你可以通过更改 Node.js 版本来决定要使用的 ECMAScript 版本,并且还可以通过运行带有标志的 Node.js 来启用特定的实验
中
的
特性
。...
C++
中
的const
代码
中
为什么使用const? 第一:采用符号常量写出的代码更容易维护; 第二:指针常常是边读边移动,而不是边写边移动; 第三:许多函数参数是只读不写的。 const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量:const类型说明符 变量名 常引用:const类型说明符 &引用名 常对象:类名const对象名 常成员函数:类名::fun(形参)const 常数组:类型说明符cons...
【C/C++】const详解,拿捏住了
目录 序 嗨,这里是狐狸~~ const 用法1:常量 用法2:指针和常量 用法3:const修饰函数传入参数 用法4:修饰函数返回值 用法5:const修饰成员函数(c++
特性
) 具体展开来讲: (一). 常量与指针 (二):常量与引用 (三):常量函数 (四):常量返回值 c++
中
const 1. const常量 2. const 修饰类的数据成员 3. const修饰指针的情况 4. const的初始化 5. 另外const 的一些强大的功能在于它在函数声明..
C/C++
中
CONST的意义
const 关键字来声明某个常量字段或常量局部变量。 常量字段和常量局部变量不是变量并且不能修改。 常量可以为数字、布尔值、字符串或 null 引用。 采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替) 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 常对象: 类名 const 对象名 常成员函数: 类名::fun(形参) const
const在c++
中
的作用
const 一个变量加上const修饰后,就变成了只读变量(不等于常量),一般不可以被修改。 比如: const int *p和int const *p两条语句等价,const修饰 *p,即 *p不可被修改, p可以被修改。 const与宏常量的区别 const常量有数据类型,宏常量没有数据类型,所以没有类型的检查,是不安全的; const可以进行调试,宏不可以调试,无法检查错误。 const...
C++ 语言
64,666
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章