C++子对象输出

来源:百度知道 编辑:UC知道 时间:2024/05/18 19:44:28
#include<iostream>
#include<string>
using namespace std;
class A
{
public:
A (int m1, int m2){num1=m1;num2=m2;}
void shuchu()
{
cout<<num1<<num2<<endl;
}
protected:
int num1,num2;
};
class B:public A
{
public:
B(int m3,int m4,int m1,int m2,int m5,int m6):A(m1,m2),nu(m5,m6)
{
num3=m3;num4=m4;
}
void shuchunu();
void shuchu2()
{cout<<num1<<num2<<num3<<num4<<endl;}
void nu.shuchu();
private:
int num3,num4;
A nu;
};
void B::shuchunu()
{cout<<num1<<num2<<endl;}
int main()
{
B num(1,2,3,4,5,6);
num.shuchu2();
return 0;
}
貌似这样输出子对象有问题,那样怎样输出呢?
我指的错误是编译错误,我的目的是输出子对象,就是对象nu的数据..
`````
2楼说对了 ,只能在B的构造函数体里面调用吗?为什么在函数外不可以呢?

B(int m3,int m4,int m1,int m2,int m5,int m6):A(m1,m2),nu(m5,m6)
{
num3=m3;num4=m4;
}
这段代码本身就调用了父类的构造函数!
后面的nu.shuchu();多余了!
一个子类在构造之前会先调用其父类的构造函数!当然就不能写在外面了。
总的来说若是用这种构造的话
B(int m3,int m4,int m1,int m2,int m5,int m6):A(m1,m2),nu(m5,m6)
{
num3=m3;num4=m4;
}就不用显示调用父类的构造函数,若是普通的那种构造函数的话,就得在子类的构造函数里去调用父类的构造函数

#include<iostream>
#include<string>
using namespace std;
class A
{
public:
A (int m1, int m2){num1=m1;num2=m2;}
void shuchu()
{
cout<<num1<<num2<<endl;
}
protected:
int num1,num2;
};
class B:public A
{
public:
B(int m3,int m4,int m1,int m2,int m5,int m6):A(m1,m2),nu(m5,m6)
{
num3=m3;num4=m4;
nu.shuchu();//nu数据你没有调用函数啊,放在构造函数里面就好了.
}
void shuchunu();
void shuchu2()
{
cout<<num1<<num2<<num3<<num4<<endl;
}