构造函数给对象赋值算不算在外部根据对象给类中内容赋值?怎样在外部根据对象给类中内容赋值呢? 5
1个回答
2016-03-31
展开全部
见以下代码:
#include <iostream>
using std::cout;
struct A {
int m_a; //默认初始化为0
};
struct B {
int *m_p; //默认初始化为空指针
A m_b[10]; //默认初始化为全0
//为m_p申请内存空间(使之能像数组一样使用)并对m_p[i]和m_b[i]赋值i
void process()
{
//警告:没有delete,实际中不应这么使用,此处仅用作示例
m_p = new int[10];
for (unsigned i = 0; i != 10; ++i) {
m_p[i] = i;
m_b[i].m_a = i;
}
}
};
int main()
{
B b0, b1;
b0.process();
b1 = b0;
//b1.m_b所有元素全从b0.m_b处执行拷贝,即执行b1.m_b[i]=b0.m_b[i]
//每个成员的拷贝执行A类默认的拷贝赋值运算符,即拷贝m_a
//输出0123456789
for (unsigned i = 0; i != 10; ++i) cout << b1.m_b[i].m_a;
//m_p是指针,拷贝只拷贝地址,b1.m_p与b0.m_p指向同一块内存
b1.m_p[0] = 1;
cout << b0.m_p[0]; //输出1
return 0;
}
#include <iostream>
using std::cout;
struct A {
int m_a; //默认初始化为0
};
struct B {
int *m_p; //默认初始化为空指针
A m_b[10]; //默认初始化为全0
//为m_p申请内存空间(使之能像数组一样使用)并对m_p[i]和m_b[i]赋值i
void process()
{
//警告:没有delete,实际中不应这么使用,此处仅用作示例
m_p = new int[10];
for (unsigned i = 0; i != 10; ++i) {
m_p[i] = i;
m_b[i].m_a = i;
}
}
};
int main()
{
B b0, b1;
b0.process();
b1 = b0;
//b1.m_b所有元素全从b0.m_b处执行拷贝,即执行b1.m_b[i]=b0.m_b[i]
//每个成员的拷贝执行A类默认的拷贝赋值运算符,即拷贝m_a
//输出0123456789
for (unsigned i = 0; i != 10; ++i) cout << b1.m_b[i].m_a;
//m_p是指针,拷贝只拷贝地址,b1.m_p与b0.m_p指向同一块内存
b1.m_p[0] = 1;
cout << b0.m_p[0]; //输出1
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询