社区
新手乐园
帖子详情
静态成员变量为什么要类外部定义呢?
Dan1980
2006-09-15 05:15:50
谁能解释一下?
...全文
236
5
打赏
收藏
静态成员变量为什么要类外部定义呢?
谁能解释一下?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
飞哥
2006-09-15
打赏
举报
回复
唉,不让定义
没办法
今天搞个代码说可以定义静态成员,报错:(
OOPhaisky
2006-09-15
打赏
举报
回复
就这么规定的,遵守就是了。
blue_zyb
2006-09-15
打赏
举报
回复
因为class声明只是编译器参照的一个模板,在没有对象生成的时候没有必要分配空间。所以说不能在类声明的时候为成员赋初始值之类的,也就是说不会定义,不会分配存储。
如果有
class A
{
static int a; // C++把class的静态成员处理为全局变量,这是一个全局变量a的
// 的声明,不过受class scope的访问限制,也即是A::a
}
对于此全局量a的定义,当然要放在global的位置
jixingzhong
2006-09-15
打赏
举报
回复
比如你规定整型用 int 定义,
为什么?
没有原因,
这个是规定 ...
jixingzhong
2006-09-15
打赏
举报
回复
这个是语法,
没有原因 ...
C++
静态成员变量
为什么在类
外部
定义
?
c++中
静态成员变量
要在类
外部
再
定义
,否则产生link2001错误. class testClass { public: static int m_i; }; // 类
外部
定义
,若不写会产生 // error LNK2001: unresolved external symbol "public: static int testClass::m_i" (?m_i@te
c++
静态成员变量
为什么要在类
外部
定义
1、
静态成员变量
是所有实例共享的,但是其只是在类中进行了声明,并未
定义
或初始化(分配内存),类和者类实例就无法访问
静态成员变量
,这显然是不对的,所以必须先在类
外部
定义
,也就是分配内存。...
C++
静态成员变量
要在类
外部
再
定义
或初始化的原因
C++中
静态成员变量
要在类
外部
再
定义
或初始化,否则会产生错误。 class A { public: static int a; }; int A::a=0; 为什么要在类的
外部
进行
定义
的原因: 1. 在类中,只是声明了静态变量,并没有
定义
。 2. 声明只是表明了变量的数据类型和属性,并不分配内存;
定义
则是需要分配内存的。 注意:如果在类里面这么写int a; 那么是既声明了变量,也
定义
了变量,两者合在一起了。 3. 静态成员是“类级...
C++ 的
静态成员变量
为什么一定要在类外
定义
C++ 的
静态成员变量
为什么一定要在类外
定义
函数如下,在C++中声明
静态成员变量
的时候,在类中只是进行了声明,并没有实际的申请出指针的内存,真正的内存是
定义
初始化的时候才会进行内存的申请,因此,又因为static类型的变量都是随着类的,因此不能随着对象的创建而申请内存,所以需要单独的进行类外
定义
,在
定义
的时候C++编译器会申请内存给静态指针。 #include <iostream> using namespace std; class Singleton { private: Si
静态成员变量
为什么只能在类外初始化?如何手动控制
静态成员变量
的初始化时机?
如果允许在类内部初始化,就可能会导致在每个实例中都有一个独立的副本(每实例化一个对象时,成员变量都会进行一次初始化(或于构造函数中,或于原位进行初始化),因此会造该静态变量成每个实例不同。因此,为了确保
静态成员变量
在整个程序中都有唯一的、确定的初始化值,必须在类的
定义
外部
进行初始化。避免多次初始化: 如果
静态成员变量
允许在类内部初始化,每个编译单元(源文件)都可能有自己的初始化值。,因为
静态成员变量
属于整个类,而不是类的特定实例。这与普通的实例变量有所不同,实例变量是每个类的实例独有的,因此可以在。
新手乐园
33,321
社区成员
41,774
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章