#include
//#include
class Container
{
public:
int x;
int y;
int z;
Container(int ,int ,int );
virtual void area() //虚函数
{
std::cout<<"面积基类虚函数"<<std::endl;
}
virtual void volume()
{
std::cout<<"体积基类虚函数"<<std::endl;
}
};
Container::Container(int a,int b,int c):x(a),y(b),z(c){};
//基类
class Sphere : public Container
{
public:
Sphere(int ) : Container(x,y,z){}; //派生构造函数
void area()
{
std::cout<<"球的半径是"<<x<<std::endl;
std::cout<<"面积为"<<4*3.14*x*x<<std::endl;
}
void volume()
{
std::cout<<"球的半径是"<<x<<std::endl;
std::cout<<"体积为"<<3.14*x*x*x<<std::endl;
}
};
int main()
{
Sphere sphere(2);
sphere.area();
sphere.volume();
return 0;
}
Sphere(int ) :Container(x,y,z){};改成Sphere(int a) :Container(a,y,z){};
#include<iostream>
//#include<string>
class Container
{
public:
int x;
int y;
int z;
Container(int ,int ,int );
virtual void area() //虚函数
{
std::cout<<"面积基类虚函数"<<std::endl;
}
virtual void volume()
{
std::cout<<"体积基类虚函数"<<std::endl;
}
};
Container::Container(int a,int b,int c):x(a),y(b),z(c){};
//基类
class Sphere : public Container
{
public:
Sphere(int a) :Container(a,y,z){}; //派生构造函数
void area()
{
std::cout<<"球的半径是"<<x<<std::endl;
std::cout<<"面积为"<<4*3.14*x*x<<std::endl;
}
void volume()
{
std::cout<<"球的半径是"<<x<<std::endl;
std::cout<<"体积为"<<3.14*x*x*x<<std::endl;
}
};
int main()
{
Sphere sphere(2);
sphere.area();
sphere.volume();
return 0;
}
球的半径是134539488
面积为2.27347e+17
球的半径是134539488
体积为7.64679e+24
乱码应该是你文本编辑器的编码设置问题吧。
我这里编译运行正常。参考如上网站。
我想知道你子类构造函数的2传给了谁?
Sphere(int ) : Container(x,y,z){}; //派生构造函数
上面这个构造函数有问题。你要确定一个参数例如:
Sphere(int a) : Container(a,a,a){}; //派生构造函数
这样才能达到效果。