如果一个类C中有一个静态数据成员 static int x;
c1 和 c2 均为 C 的对象
那么执行如下代码后
1.fstream fs("out.dat", ios::out|ios::binary);
2.fs.write(reinterpret_cast<char*>(&c1), sizeof(C));
3.fs.write(reinterpret_cast<char*>(&c2), sizeof(C));
out.dat 文件中是否有x的值?
如果有的话,其中保存了几个 x 值的副本?
————来自课件“u07s07 - 讨论”
因为类的static属于类。所以,先创建一个.dat文件储存的static int类型的x的值为22。
但结果是
c1 和 c2 均为 C 的对象
那么执行如下代码后
1.fstream fs("out.dat", ios::out|ios::binary);
2.fs.write(reinterpret_cast<char*>(&c1), sizeof(C));
3.fs.write(reinterpret_cast<char*>(&c2), sizeof(C));
out.dat 文件中是否有x的值?
如果有的话,其中保存了几个 x 值的副本?
————来自课件“u07s07 - 讨论”
因为类的static属于类。所以,先创建一个.dat文件储存的static int类型的x的值为22。
- #include<iostream>
- #include<fstream>
- using namespace std;
- class A{
- public:
- static int x;
- };
- int A::x = 22
- int main(){
- fstream erhu;
- erhu.open("char.dat",ios::out|ios::binary);
- A test;
- erhu.write(reinterpret_cast<char*>(&test),sizeof(test));
- erhu.close();
- cout << "x is :" << test1.x;
- return 0;
- }
下面从文件中读取,但X设置为11
代码:
- #include<iostream>
- #include<fstream>
- using namespace std;
- class A{
- public:
- static int x;
- };
- int A::x = 11;
- int main(){
- fstream erhu;
- A test1;
- erhu.open("char.dat",ios::in|ios::binary);
- erhu.read(reinterpret_cast<char*>(&test1),sizeof(test1));
- erhu.close();
- cout << "x is :" << A::x;
- return 0;
- }
证明static类型不能被储存。