C++里面,含有数组的类对象是怎么赋值的?
额,可能是描述得不清楚。我应该想问的是classbase{private:inta[10];}basec1;basec2;c2=c1;----------->>>>这样是...
额,可能是描述得不清楚。我应该想问的是
class base
{
private:
int a[10];
}
base c1;
base c2;
c2 = c1; ----------->>>>这样是可以的,但是原理是什么? 展开
class base
{
private:
int a[10];
}
base c1;
base c2;
c2 = c1; ----------->>>>这样是可以的,但是原理是什么? 展开
6个回答
展开全部
C++类的对象数组赋值问题 如下:
void main()
{
CStudent Cs[4]={
CStudent(1,"张三",80),
CStudent(2,"李四",75),
CStudent(3,"王五",95),
CStudent(4,"小六",62)
}; //这样就可以赋初值.也可以使用成员函数一个个设置.如下:
/* Cs[0].SetID(1);
Cs[0].SetName("张三");
Cs[0].SetScore(80); Cs[1].SetID(2);
Cs[1].SetName("李四");
Cs[1].SetScore(75); Cs[2].SetID(3);
Cs[2].SetName("王五");
Cs[2].SetScore(95); Cs[3].SetID(4);
Cs[3].SetName("小六");
Cs[3].SetScore(62);
*/
Sort(Cs);
for(int i=0; i<4; i++)
{
Cs[i].Show();
}}
//选择排序void Sort(CStudent Cs[4])
{
int i,j,k;
CStudent t;
for(i=0; i<3; i++)
{
k = i;
for(j=i+1;j<4;j++)
{
if(Cs[k].GetScore()>Cs[j].GetScore())
{
k = j;
}
}
if(k != i)
{
t = Cs[k];//这里涉及到对象的交换,而对象里又有指针型成员,所以要重载=运算符.
Cs[k] = Cs[i];
Cs[i] = t;
}
}
}//重载了=运算符CStudent &CStudent::operator=(const CStudent cs)
{
if(this != &cs)
{
ID=cs.ID;
pName=new char[20];
strcpy(pName,cs.pName);
fScore=cs.fScore;
}
return *this;
}
来自 (掏包) 爱恋而女装
展开全部
含有数组的类对象可以通过以下方法赋值:
通过构造赋值
例如:
Class A
{
public:
A(int a[], int n)
{
for(int i = 0; i < n; i++)
{
m_int[i] = a[i];
}
}
int m_int[5];
};
使用:
int a[5] = {1,2,3,4,5};
A a(a, 5);
2. 直接赋值
例如:
Class A
{
public:
int m_int[5];
};
使用:
A a;
for(int i = 0; i < 5; i++)
{
a.m_int[i] =i;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[0]=1,a[1]=2不就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c2 = c1原理是这两个是类对象,就像int a,b;a=b;
追问
但是如果类里面定义了指针p且对指针进行new的话,这样做是不是就构成了浅构造?
然后数组不也是指针么,为什么数组没事?
追答
类的优点也体现在此啊,c2 = c1是类对象,这相当于给C2赋值,数组i是类成员。处理数组i时,c1.i[2]=c2.i[2],类里用new分配内存?不清楚
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你直接类里面给个接口不就完事了。。。
接受个数组,然后转存下,完事。
接受个数组,然后转存下,完事。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询