c++如何为数组成员在初始化列表里初始化
比如我定义如下classA{private:inta[10];public:A(intn):a[0](n){}//我想在构造函数里为数组a的第一个元素初始化为n,但这种形...
比如我定义如下
class A
{
private:
int a[10];
public:
A(int n):a[0](n){} //我想在构造函数里为数组a的第一个元素初始化为n,但这种形式肯定不能通过编译,那怎么办呢?
} 展开
class A
{
private:
int a[10];
public:
A(int n):a[0](n){} //我想在构造函数里为数组a的第一个元素初始化为n,但这种形式肯定不能通过编译,那怎么办呢?
} 展开
展开全部
如果你一定要在初始化列表中初始化,可以这样做,就是麻烦了些:
class A
{
private:
union {
int a[10];
int a0;
};
public:
A(int n):a0(n){}
};
class A
{
private:
union {
int a[10];
int a0;
};
public:
A(int n):a0(n){}
};
追问
能说一下原理么?
追答
使用的是union(我忘了中文名叫什么了),union中的成员共用同一段内存,简单来讲就是union的内存等于union中内存最大的成员的内存。其他成员都只占union的开头一部分。所以这里union中的a[10]和a0共用内存,a0的内存和a[0]相同,对a0的初始化就是对a[0]的初始化
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
初始化类表初始化的是类的成员,你这个类中的成员是a,而不是a[0]
所以不行
所以不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A(int n)
{
a[0] = n;
}
{
a[0] = n;
}
追问
不能在初始化列表里初始化么?
追答
不能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询