读书人

在类中怎么给字符数组成员初始化呢

发布时间: 2012-04-26 14:01:31 作者: rapoo

在类中如何给字符数组成员初始化呢
在类中如何给数组成员初始化呢

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 *)好东西

读书人网 >C++

热点推荐