在类中如何给字符数组成员初始化呢
在类中如何给数组成员初始化呢
- C/C++ code
#include<iostream>using namespace std;class A{public: A():a("hello"){}private: char a[20];};
这样为什么不行呢
[解决办法]
- C/C++ code
A(){strcpy(a,"Hello");}
[解决办法]
a是数组名,代码数组首地址,是常量,不能被赋值和修改,可以修改的是它所指向的内存
[解决办法]
这个错误就好比:
char a[20]
a = "hello";
自己看可以吗?
初始化可以在构造函数里写啊,构造函数就是用来给你了初始化的。
[解决办法]
- C/C++ code
cat main.cpp#include <cstdio>#include <iostream>#include <cstdlib>using namespace std;class A{public: A():a({0x30, 0x32, 0x33}){}//private:public: char a[20];};int main(){ A t; cout << t.a[1] << endl; return 0;}
[解决办法]
一楼是对的,换个新点的编译器就可以照六楼那样了。
参http://blog.csdn.net/zzulp/article/details/6580891
第3条。
[解决办法]
6楼的方法在VS2008的编译器下是不行的,没法通过编译的,在VS2010的编译器下是否能通过没试过。给类中的数组成员初始化可以在构造函数的函数体中进行初始化:
A():a("hello"){}
这样给a初始化相当于让a指向了常量数据区,而数组a是个常量指针,也就相当于a是一个char *const a;a是不能改变它的指向的,但可以改变a所指向的内容.
- C/C++ code
#include<iostream>using namespace std;class A{public: A() {strcpy(a,"hello");}private: char a[20];};
[解决办法]
strcpy(char *,const char *)好东西