静态数据成员的初始值的指定
2007-01-05 16:45
218 查看
静态数据成员不属于类对象,而是全部类对象所共有,你可以的这么的理解:
静态数据成员独立于类的一个对象,它的定义(分配存储区域)不是定义类对象时进行的,而是独立进行的,
而类定义本身不分配存储区,只是引入一个类型名字(类类型),所以必需在类定义的外面定义它,这是才分配内存给静态数据成员
class A
{
public:
static int i;
};
int main()
{
cout << A::i;
return 0;
}
你这么写会发现i根本不存在
class A
{
public:
static int i;
};
int A::i =10;
int main()
{
cout << A::i;
return 0;
}
这样就可以了
至于初始值,
在类定义的时候指出和类外实际定义的时候
给出只能用一个,我上面的例程,是在实际定义的时候给初始值的
否则编译器怎么知道到底用哪个去初始化
类定义中的初始值的指定只是一个指定的过程,这个并不是一个数据成员定义,初始化的时候,只是说明以后的在定义的时候,用这里指出值的来进行初始化
在vc6 类定义中的static int i =0;赋成其它值会报个错
而在类外则可,是编译器相关么,是语法规则么
========================
解决:
能够使用指定初始值语法的需满足三个条件:
1。static
2。const
3。有序类型(可以比较大小,题解说“整型”,double也并不属于,int属于,个人认为enum,char之类也属于,看函数重载的参数转换中整型转换提到的类型,个人认为均属于)
class A
{
public:
static const int ci = 10;
};
const int A::ci ;
int main()
{
cout << A::ci ;
return 0 ;
}
这种才可以的,一般的static不能使用指定初始值语法
上述语法vc6暂时不支持
静态数据成员独立于类的一个对象,它的定义(分配存储区域)不是定义类对象时进行的,而是独立进行的,
而类定义本身不分配存储区,只是引入一个类型名字(类类型),所以必需在类定义的外面定义它,这是才分配内存给静态数据成员
class A
{
public:
static int i;
};
int main()
{
cout << A::i;
return 0;
}
你这么写会发现i根本不存在
class A
{
public:
static int i;
};
int A::i =10;
int main()
{
cout << A::i;
return 0;
}
这样就可以了
至于初始值,
在类定义的时候指出和类外实际定义的时候
给出只能用一个,我上面的例程,是在实际定义的时候给初始值的
否则编译器怎么知道到底用哪个去初始化
类定义中的初始值的指定只是一个指定的过程,这个并不是一个数据成员定义,初始化的时候,只是说明以后的在定义的时候,用这里指出值的来进行初始化
在vc6 类定义中的static int i =0;赋成其它值会报个错
而在类外则可,是编译器相关么,是语法规则么
========================
解决:
能够使用指定初始值语法的需满足三个条件:
1。static
2。const
3。有序类型(可以比较大小,题解说“整型”,double也并不属于,int属于,个人认为enum,char之类也属于,看函数重载的参数转换中整型转换提到的类型,个人认为均属于)
class A
{
public:
static const int ci = 10;
};
const int A::ci ;
int main()
{
cout << A::ci ;
return 0 ;
}
这种才可以的,一般的static不能使用指定初始值语法
上述语法vc6暂时不支持
相关文章推荐
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
- 《第七周任务一》含有静态数据成员和成员函数的Time类,类中所有的对象共有的数据
- 第七周c++任务一。含有静态数据成员和成员函数的Time类
- 静态数据成员和静态成员函数
- 3-6 静态数据成员与静态成员函数
- 静态成员(静态成员函数,静态数据成员)的特性
- 详解C++编程中的静态成员与可变数据成员
- 【2675】3-6 静态数据成员与静态成员函数
- C++类中具有静态数据成员
- 读几个小程序了解c++:Part 01(构造函数、析构函数、指针、静态数据成员)
- 静态成员数据与函数
- C++静态成员函数&静态数据成员
- 静态成员函数的作用与静态数据成员的初始化
- 类的静态成员数据变量
- 静态数据成员只能在类体外,且通过函数体进行初始化(静态数据成员是在程序编译时被分配空间的)
- c++ 类静态数据成员理解
- C++静态数据成员定义及应用浅谈
- C++中静态数据成员
- 第七周 静态数据成员的初始化
- [转载]C++中静态成员数据与静态成员函数小结