注册 登录
编程论坛 C++教室

关于继承中的虚函数的问题

huangxiuqing 发布于 2008-11-19 18:30, 1529 次点击
当在主函数中定义一个指向派生类的基类指针时,为什么不能在基类中将构造函数声明为虚函数?详细的可以看下面的程序:
     #include<iostream>
using namespace std;
class point
{
public:
    virtual  point()
    {
      cout<<"huang"<<endl;
      }
    virtual ~point()
    {
        cout<<"executing point destructor "<<endl;
    }
};
class circle :public point
{
public:
     virtual circle (double r):radius(r)
    {}
    ~circle ()
    {
        cout<<"executing circle destructor"<<endl;
    }
private:
    double radius ;
};
int main()
{
    point *p=new circle (10);
    delete p;
}
为什么编译会出错?
12 回复
#2
zxwangyun2008-11-23 20:46
构造函数是不能被继承的!
你定义为虚函数又有什么用呢?
#3
荒野的雄狮2008-11-23 20:51
方法和析构函数最好定义为虚函数
#4
小小强122008-11-23 21:34
基类的构造函数和析构函数都不能被继承
#5
newyj2008-11-23 23:02
构造函数 不能 是 virtual的
#6
aipb20072008-11-23 23:54
构造函数不能被继承,而析构函数是可以的。

可以这样理解,构造函数其实是与类相关,于对象无关的(有点像static函数)。构造函数被调用时,对象都没有,何来继承?
#7
sunkaidong2008-11-24 09:21
构造函数每有virtual的必要,但是析构却有这个必要...
#8
asd67918682008-11-24 14:19
构造函数可以定义为虚函数么????????????
#9
中学者2008-11-24 22:46
可以伪构造函数....是一种设计模式 ,称为clone技术~
#10
hauhu44552008-11-25 20:36
构造函数是不能为虚函数的
继承的时候构造函数是可以被继承的
#11
hauhu44552008-11-25 20:37
继承的时候构造函数是不可以被继承的
#12
hauhu44552008-11-25 20:38
构造函数是不可以为虚函数的
在继承的时候也是 不可以被继承的
#13
tedted2016-09-20 15:27
回复 9楼 中学者
Clone  不过没掌握 难
1