社区
C++ 语言
帖子详情
C++中const的连接特性
jadeinsea
2003-08-25 09:24:08
我理解是否正确:“在C++中,普通变量或对象默认的连接方式为内部连接,所以在其他文件中引用时候要用extern声明;而函数一般是外部连接(除inline、const外)”
上面的理解对吗?
...全文
100
6
打赏
收藏
C++中const的连接特性
我理解是否正确:“在C++中,普通变量或对象默认的连接方式为内部连接,所以在其他文件中引用时候要用extern声明;而函数一般是外部连接(除inline、const外)” 上面的理解对吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
没人知道?
c++
的
const
总结(转)
原因如下:如果返回值为某个对象为
const
(
const
A test = A实例)或某个对象的引用为
const
(
const
A& test = A实例),则返回值具有
const
属性,则返回实例只能访问类A
中
的公有(保护)数据成员和
const
成员函数,并且...
【C/
C++
】
const
详解,拿捏住了
用法5:
const
修饰成员函数(
c++
特性
) 具体展开来讲: (一). 常量与指针 (二):常量与引用 (三):常量函数 (四):常量返回值
c++
中
const
1.
const
常量 2.
const
修饰类的数据成员 3.
const
修饰指针的情况 4...
C++
中
的
const
代码
中
为什么使用
const
? 第一:采用符号常量写出的代码更容易维护; 第二:指针常常是边读边移动,而不是边写边移动; 第三:许多函数参数是只读不写的。
const
最常见用途是作为数组的界和switch分情况标号(也...
C/
C++
中
const
关键字详解
为什么使用
const
?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。
const
最常见用途是作为数组的界和switch 分情况标号(也可以用枚举符代替),分类如下: ...
C++
中
const
和static的区别
const
就是只读的意思,只在声明
中
使用; static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放; 对于全局变量,如果...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章