77问答网
所有问题
c++ 为什么不能在类类对static成员定义? 我看的都是类内声明,类外定义
如题所述
举报该问题
推荐答案 2016-03-02
你好,静态数据成员为各对象所共有,而不只属于某个对象的成员,所有对象都可以引用它。静态的数据成员在内存中只占一份空间,而不是每个对象都分别为它保留一份空间。所以静态数据成员只能在类体外进行初始化。
再复制一下看到的别人的解释吧。静态数据成员对于所有类对象来说只有一份,因此不能在类体内随着每个类对象的初始化而初始化,而是需要在全局数据空间中进行单独的初始化,并且只能存在一份实例。希望能帮助到你。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/YYvIGI8qvN8qWNI3IWp.html
其他回答
第1个回答 2016-03-02
类内定义静态成员,无法实现全局静态变量的意义,产生语义冲突。
追问
为什么?
追答
静态变量你就理解成全局变量好了。
本回答被网友采纳
第2个回答 2019-01-05
这是c++的规则
const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall
而类中的static函数本质上是全局函数,调用规约是__cdecl或__stdcall,不能用const来修饰它
相似回答
C++
中如何
在类
中
定义
静态const的string?
答:
非常遗憾,不行。我记得以前用VC6.0的时候
,不能在类
中定义常静态成员数据。用VC2003,只能定义常静态整型成员数据,如int char之类的,不能定义float double。如:class Test { public:Test();~Test();private:
static
const int a = 1;};用dev-
c++的
话,常静态成员数据只能是内部数据类型,也...
在
c++
中静态成员函数也
是类的成员
函数,但是它的
定义
可
在类的
里面定义...
答:
可以的,静态成员函数用来解决操作合法性控制问题 类外代码可以使用类名和作用域符来调用静态成员函数 静态成员函数只能引用该类的静态数据成员或静态成员函数
static
数据
成员
必须
在类定义
体外部定义么?
答:
是的,
因为类是一种类型,本身不会被分配空间
,就像int类型不会被分配空间,所以在类内声明的变量是不会被分配空间的,即便是static数据成员也不例外。为了给static数据成员分配空间,需要在类外定义。注意,声明和定义是不同的,只有定义才分配空间。
C++
中对自
定义
函数
的声明,
放main内还是
外,
在含类的程序中,貌似只能在...
答:
一般放在函数外,调用之前。放在哪跟有类没类没有直接联系。实践中一般将函数声明、
类的定义
放在头文件中。而定义放在单独的源文件(.cpp)。如果有哪个源文件中用到了头文件中声明的函数或类,只需#include “***.h”将头文件包含进来。
c++
私有
成员
函数可以
在类外定义
吗
答:
private和public是用来控制对象访问
类的成员的
,至于函数在那里定义则和这个无关。对象不能访问类的私有函数。但是私有函数可以
在类内
或者类外定义,
类内定义
的函数默认是内联的
,类外定义
则是非内联函数。
C++的类
中怎么用静态变量?
答:
C++
类支持静态成员变量,在使用的时候,遵循
类内声明,类外定义的
原则。即在类内部进行声明该变量的类型以及静态属性,但不可以赋初始值,而是要在类外定义,同时赋初始值。如 class class_type{
static
var_type var; };var_type class_type::var = init_value;初始值部分,=init_value可以省略...
c/
c++
类永远只是
声明
答:
没有class foo这种形式的类
声明,
只有类定义。class aType()void aMethod() }(6) Java中没有作用域范围运算符“::”。Java利用点号做所有的事情,但可以不用考虑它,因为只能在一个类里定义元素。即使那些方法定义,也必须在一个类的内部,所以根本没有必要指定作用域的范围。我们注意到的一项差异是
对static
方法的...
大家正在搜
static声明的成员变量被称为
static定义的变量有什么特点
如果过程被定义为static类型
static类成员
static能访问成员变量吗
static函数访问类成员
static成员函数的作用
static定义静态变量的用法
用static定义的全局静态变量
相关问题
C++中static函数类外定义的时候为什么不写static...
c++ 类的静态数据成员为什么不能在类内定义
C++:构造函数在类内声明,类外定义 为什么无法运行呢?
c++中的析构函数如何在类内声明,在类外定义
类声明中静态数据成员为什么是声明
为什么static成员必须在类外初始化
为何C++中可以在自身类体中定义static的自身对象,但是...