首页 新闻 搜索 专区 学院

调用基类的构造函数和成员函数

0
[已解决问题] 解决于 2012-01-02 15:04
class Base
{
private:
int value;
public:
Base()
{
cout<<"Base()"<<endl;
}
Base(int value)
{
cout<<"Base(int x)"<<endl;
this->value=value;
}
virtual void display()
{
cout<<"x="<<value<<endl;
}
};
class Derived:public Base
{
public:
Derived()
{
cout<<"Derive()"<<endl;
}
Derived(int value):Base(value)
{
cout<<"Derive(int value)"<<endl;
Base::display();
}

};

在派生类中,如何调用基类的构造函数?只能像下面那样子调用吗?

 Derived(int value):Base(value)
能不能像调用基类的普通成员函数那样子啊
Base::display();
会不会有调用两个基类的构造函数的情况啊?
< >
分享
最佳答案
1

我是学C#的,以前学过C++,但是很长时间了,所以都忘得差不多了,说的不对还请见谅。

::只能在类成员函数和类成员变量中。构造函数的调用只能那样调用,你可以试试用::应该会报错的!

当调用两个基类的构造函数时,比如

class a
{
public:
a()
{
cout<<"a"<<endl;
}
};
class b
{
public:
b()
{
cout<<"b"<<endl;
}
};
class c :public a,public b
{
public:
c():a()
{
cout<<"c"<<endl;
}
};
void main()
{
c cc;
}

这样输出的就是:abc

yanzhe | 菜鸟二级 |园豆:213 | 2011-12-31 10:48

我想问的是调用一个基类里面的两个构造函数,不是两个基类的构造函数

林羽飞扬 | 园豆:193 (初学一级) | 2011-12-31 14:33

@林羽飞扬: 照着你的例子改一下,这样行吗?我没试过,你自己来个例子试试呗,别人光说不行,自己练出来才会真正明白!

Derived() :Base()
{
cout<<"Derive()"<<endl;
}

 

yanzhe | 园豆:213 (菜鸟二级) | 2011-12-31 14:48

thankyou

实践出真知

@yanzhe: 

林羽飞扬 | 园豆:193 (初学一级) | 2012-01-02 15:01
其他回答(1)
1

 Derived()
{
base(value);
cout<<"Derive()"<<endl;
base.foo();
}
Greatest | 园豆:678 (小虾三级) | 2011-12-31 10:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册