在类中怎么给字符数组成员初始化呢
在类中如何给字符数组成员初始化呢
在类中如何给数组成员初始化呢
这样为什么不行呢
------解决方案--------------------
在类中如何给数组成员初始化呢
- 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.****.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 *)好东西