C++问题 class clrcle {double r,s; public: circle(d

C++问题 class clrcle {double r,s;
public:
circle(double x=0) {r=x;}
class incircle:public circle
{public:
incircle(double x=0):circle(x){}
};我的问题是派生类的构造函数中包含了基类的构造函数 也就是用派生类的初始化列表显示调用了基类构造函数 但是调用完了基类构造函数派生类的构造函数又在哪里???
我可不可以这样理解 用基类的构造函数初始化了基类,又借用基类的构造函数初始化了派生类。
还有一问:显示调用基类构造函数只能用初始化列表是吧??
在函数体内调用基类构造函数可以吗???

派生类的构造函数的执行顺序是:

1、初始化基类,就是调用基类的构造函数。如果基类也是一个派生类,就会先初始化它的基类,以此类推,最先初始化的是最上层的基类
2、基类初始化完成后,就开始执行派生类的初始化了,也就是circle(x){}后面的{}(你的派生类的构造函数体没有执行任何东西)

另外,你也可以这样。在派生类的构造函数中显示调用基类的构造函数。
incircle(double x = 0)
{
clrcle::clrcle();

}追问

有借用基类构造函数的这一说 吗? 因为派生类 的确没有具体的构造函数体。 但是确确有初始化

追答

你说的是什么有初始化?

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-22
构造函数怎么能显式调用,是创建对象时自动调用的。初始化基类用初始化列表。构造完基类,接着就是调用派生类的构造函数,你可以在两个构造函数中加入输出语句,就可以看到先后顺序了。本回答被网友采纳
第2个回答  2012-07-23
先调用基类再调用派生类

C++问题 class clrcle {double r,s; public: circle(d
1、初始化基类,就是调用基类的构造函数。如果基类也是一个派生类,就会先初始化它的基类,以此类推,最先初始化的是最上层的基类 2、基类初始化完成后,就开始执行派生类的初始化了,也就是circle(x){}后面的{}(你的派生类的构造函数体没有执行任何东西)另外,你也可以这样。在派生类的构造函数...

编写一个c++程序,从键盘输入圆的半径,输出圆的周长和面积
(法1)#include<iostream> using namespace std;define PI 3.1415926 class Circle { double r;public:Circle(double R=0){ r=R;} void Get(){ cout<<"输入圆半径:";cin>>r;} void cal()\/\/计算圆的周长和半径 { cout<<"周长:"<<2*PI*r<<endl;cout<<"面积:"<<PI*r*r<<e...

c++程序设计 应用抽象类Circle有数据成员半径R派生出圆 圆内接正方形...
define __CMYCIRCLE__class Circle { public:Circle( void );Circle( const double &dR );virtual ~Circle( void );inline double getR( void ){ return m_dR; } inline int setR( const double &dR ){ m_dR = dR; } protected:double m_dR;};class CMyCircle : public Circle { p...

C++编程出现点问题,求解。11在线等
cin>>i ; \/\/ 这里去掉 >>endl ,第 21 行 include <string>#include <iostream> \/\/ 加上头文件 using namespace std;const double PI=3.14;class circle{double r;public:double s(double r){ return (PI*r*r);}double c(double r){ return (2*PI*r);}} ;int...

圆的程序怎么编程?
C++编程 includeusingnamespacestd;#definePI3.141592635classCircle{public:Circle():_r(0.f){}Circle(doubler):_r(r){}Circle(constCircle&circle){this->_r=circle._r;}voidsetRadius(doubler){this->_r=r;}doubleArea(){returnPI*this->_r*this->_r;}doubleCircumference(){return2*...

用c++ 定义一个圆类,计算圆的面积和周长。 要求:分别用成员函数和友元函...
class Circle { public:Circle():radius(0){} Circle(double r):radius(r){} const double area() const { return M_PI * radius * radius;} const double perimeter() const { return 2 * M_PI * radius;} friend double area(Circle);friend double perimeter(Circle);private:double ...

关于类和派生的C++问题
class Circle { protected:\/\/不能用私有的,不然继承后就必须使用基类的函数来访问,而我们又没有写那个函数 double r;public:Circle(double a){r=a;}\/\/掉了分号 double s()\/\/没必要写成加参数的 { double s;s=pi*r*r;return s;} };class Cyclinder:public Circle { public:Cyclinder(...

C++求圆面积的程序
class circle\/\/圆类 { private:float r;public:circle(float rod):r(rod){} float mianji(){return 3.14*r*r;} float getradious(){return r;} };int main(){ float radious;cout<<"please enter the radious"<<endl;cin>>radious;circle c(radious);cout<<"圆的半径为:"<<c.get...

求圆面积的C++程序设计
include<iostream> using namespace std;const double PI=3.1415;int main(){ double r;cin>>r; \/\/输入半径 cout<<PI*r*r<<endl; \/\/输出面积 return 0;}

c++圆周长面积
class Circle { public:Circle(double r);Circle(const Circle &rhs);~Circle();double getR() const;void setR(double r);double getCircumference() const;double getArea() const;void display();private:double m_radius;double m_circumference;double m_area;};Circle::Circle(double r = 0...

相似回答