大一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){}是什么意思。。。 展开
#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){}是什么意思。。。 展开
3个回答
展开全部
拷贝构造函数,也可以叫复制拷贝函数,或者浅拷贝,作用类型于构造函数。函数方式:类名(类的引用),比如A(A&
a), 因为不想改变原来的对象,更通用的方式是A(const 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){}了呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
又是你,这个相当于拷贝构造函数,就是用一个对象去初始化一个对象
哪里不懂再问,这次一定要给我分!
哪里不懂再问,这次一定要给我分!
追问
那A是一个类名,A(1)中1是一个常数,A(1)是作为一个对象吗?
追答
A(..)是生成一个临时对象,临时对象没有对象名字),就是因为在A类中你没有无参构造函数,在初始化B的时候obj(a)找不到a的构造,如果你不想加这句,可以在A类中加A(){};这样就不会出错了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
拷贝构造函数,A (1)是构造函数呀。拷贝构造函数 是复制其他对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询