C++静态结构体数据成员的初始化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++静态结构体数据成员的初始化相关的知识,希望对你有一定的参考价值。
#include<iostream>
using namespace std;
struct consumer
int num;
char name[18];
char password[26];
long yu_e;
;
class ATM
public:
void in();
void out();
void changeP();
void check();
void give();
private:
static consumer orange[5];
;
我想对静态的结构体成员进行初始化,应该如何进行呢?
#include<iostream>
using namespace std;
struct consumer
int num;
char name[18];
char password[26];
long yu_e;
;
class ATM
public:
void in();
void out();
void changeP();
void check();
void give();
private:
static consumer orange[5];
;
/*注意是在类的外面,就像定义全局变量一样*/
consumer ATM::orange[5]=0, "zhangshang", "098988", 100,
......
4,"wuhai","2222",99
; 参考技术A 静态成员初始化,只能在类外以全局的方式进行,不能在类中完成.
#include<iostream>
using namespace std;
//定义一个结构体
struct consumer
int num;
char name[18];
char password[26];
long yu_e;
;
class ATM
public:
void in();
void out();
void changeP();
void check();
void give();
private:
static consumer orange[5];
;
/*注意是在类的外面,就像定义全局变量一样*/
consumer ATM::orange[5]=0, "zhangshang", "098988", 100,
......
4,"wuhai","2222",99
; 参考技术B 在cpp中写入如下语句:
consumer ATM::orange[] =
0, "A", "A", 100,
1, "B", "B", 100,
2, "C", "C", 100,
3, "D", "D", 100,
4, "E", "E", 100; 参考技术C 它和普通数据成员的初始化不同,静态数据成员要在类外初始化,并且在定义这个类的对象之前初始化。通常在主函数之前
C++ 如何将一个静态结构体数组初始化?
如
struct MyStruct
CString name;
int a;
;
class A
public:
static struct MyStruct myStruct[10][1];
;
你这个是C++ 的语法,C++ 中 结构体和类的使用是等同的 只有细微的差别 所以他可以有构造函数
2.自己赋值 满足自己的初始需要 比 构造函数灵活点 方法:
struct MyStruct
string name;
int a;
;
class A
public:
static struct MyStruct myStruct[10][1];
;
MyStruct A::myStruct[10][1] = "123",1,"123",1,"123",1,"123",1,"123",1,"123",1,"123",1,"123",1,"123",1,"123",1;
在类外面这样赋值就可以了
调用的时候:
int main()
cout<< A::myStruct[0][0].name.c_str();
getchar();
return 0;
我实在linux 给你调试的 所以 CString 改为了 string 你改回去就可以了 测试OK ,望采纳~~追问
嗯哪,谢谢~不过可不可以不都写完10个?
MyStruct A::myStruct[10][1] = "123",1,;这样? 我试试~
是不可以的,结构体的赋值 和 数组的赋值不一样, 如果你是想让每一个初始化成一样的值 ,那么建议你实现结构体的构造函数
struct MyStruct
string name;
int a;
MyStruct()
name = "123";
a = 1;
;
如果需要成员有初始值,则需要写构造函数,否则直接memset初始化为0即可。
参考如下:
struct _tagA
int a1;
_tagA()
a1 = 1;
a[100];
memset(&a, 0, sizeof(a)); 参考技术B struct有个构造函数就行了。。。追问
struct 好像是不能有构造函数的
追答C++可以有,还能有成员函数,私有成员和公共成员,运算符重载都行。。。Struct的成员默认的都是公有的,类全是默认私有,区别仅此而已,其他的貌似和类没区别(反正我没发现),他也可以继承一个类。。。
参考技术C #include<iostream>#include<string>
using namespace std;
struct MyStruct
string name;
int a;
;
class A
public:
static MyStruct myStruct[3];
;
MyStruct A::myStruct[3]="xiao",1,"ji",2,"ba",3;
int main()
A a;
cout << a.myStruct[0].name << a.myStruct[0].a << endl;
参考技术D 直接赋值不久行了吗
以上是关于C++静态结构体数据成员的初始化的主要内容,如果未能解决你的问题,请参考以下文章
C++文档阅读笔记-Difference Between C Structures and C++ Structures
C++文档阅读笔记-Difference Between C Structures and C++ Structures
C++文档阅读笔记-Difference Between C Structures and C++ Structures