![]() |
1
1
其他的答案已经给出了如何修复它的方法——我将更深入地探讨原因。 当你这样做的时候:
编译器可能实际上正在生成:
这意味着这个翻译单元和
但是,当你使用
不过,上面的类也有一个无效的代码问题——仅
静态常量积分
成员可以用您使用的语法初始化(在类体中放入k=7.7)。--
|
![]() |
2
2
类“definition”实际上只提供
|
![]() |
3
1
听起来您好像在想为什么需要定义变量,即使您没有访问它。 要打印地址,它需要有一个地址。要有地址,它必须存在。要存在,它需要有一个定义,而链接器需要在全局变量空间中为其分配一个位置。所以,没有中间地带。
“在引擎盖下,”定义告诉链接器全局的初始值设定项是什么。(在这种情况下,初始值设定项位于
另外,除非编译器执行不可能详细的分析,否则它不能真正说明
|
![]() |
4
1
如果你能定义像
为了避免定义是单独存在于
从C++标准文档SEC 9.4.1,
另外,9.4.2规定,
希望它有帮助。 |
![]() |
5
1
班里的那个是
宣言
变量的
|
![]() |
6
0
静态变量可以被视为类的所有对象共享的数据,因此只应创建该变量的一个副本。有了这句话,谁应该承担为这个成员分配内存的责任呢?显然,它不能是对象的责任,因为可能存在多个对象,这将引发另一个挑战,即哪个对象应该为该成员分配内存。 因此,通常compliler需要类外的、该成员的显式定义,因此行:
这样可以确保类的所有对象都可以访问静态成员变量。这个变量的内存分配在全局可访问的内存上。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |