大一c++期末考试,又是一道读程序写结果的题目~跪求大神

现有程序如下:#include<iostream>usingnamespacestd;classA{public:A(intn):num(n){out();}A(cons... 现有程序如下:
#include<iostream>
using namespace std;
class A
{
public:
A(int n):num (n) {out();}
A(const A& rhs):num(rhs.num) //我以为是num=rhs.num
{out ();}
void out(){cout<<num<<endl;}
protected :
int num;
};
class B :public A
{
public:
B(A& a): //可是我发现删了这里的A(1)或者obj(a)居然会报错,哎造孽
obj(a), A(1){}
void out(){obj.out();}
private:A obj;
};
void main()
{
A a(8);
B b1(a);
B b2(b1);
}
综上所述,我想请问大神
A(const A& rhs):num(rhs.num) {}
B(A& a): obj(a), A(1){}是什么意思。。。
展开
 我来答
空对空导弹88
2013-06-08 · TA获得超过266个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:167万
展开全部
拷贝构造函数,也可以叫复制拷贝函数,或者浅拷贝,作用类型于构造函数。函数方式:类名(类的引用),比如A(A&
a), 因为不想改变原来的对象,更通用的方式是A(const A &a)。主要用在,拷贝赋值,传对象给函数,返回对象给函数。
追问
那在A(const A& rhs):num(rhs.num)中,是将对象rhs.num的值赋值给了num么,为什么在类B中调用的时候就是 B(A& a):obj(a), A(1){}了呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cd3d6c4
2013-06-08 · TA获得超过315个赞
知道小有建树答主
回答量:262
采纳率:0%
帮助的人:279万
展开全部
又是你,这个相当于拷贝构造函数,就是用一个对象去初始化一个对象
哪里不懂再问,这次一定要给我分!
追问
那A是一个类名,A(1)中1是一个常数,A(1)是作为一个对象吗?
追答
A(..)是生成一个临时对象,临时对象没有对象名字),就是因为在A类中你没有无参构造函数,在初始化B的时候obj(a)找不到a的构造,如果你不想加这句,可以在A类中加A(){};这样就不会出错了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
果酱实验室
2013-06-08 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:126万
展开全部
拷贝构造函数,A (1)是构造函数呀。拷贝构造函数 是复制其他对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式