77问答网
所有问题
当前搜索:
为什么没有虚构造函数
为什么
C++不能
有虚构造函数
,却可以有虚析构函
答:
虚
析构是为了支持多态机制的,比如基类指针实际指向了一个派生类对象,那么安全的delete指针就需要找对析构的起点,所以虚析构函数是必要的。
构造函数
的顺序和析构函数的执行顺序是相反的,构造函数要求是先构建基类部分的,而析构函数则反过来,先调用派生类的析构函数,再沿着继承体系向上。其次从实际意...
为什么
C++的
构造函数
不可以是
虚函数
,而析构
答:
虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用
。构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀。所以构造函数没有必要是虚函数。虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父...
c++中
有虚构造函数
吗
答:
对象初始化之前没有类型 假如虚构造的话
无法断定构造函数到底是执行基类的还是派生类型的构造
所以不能虚构造
在C++中,能否声明
虚构函数
?
为什么
?能否声明虚析构函数?为什么?
答:
原因如下:在C++-中不能声明虚构造函数,多态是不同的对象对同一消息有不同的行为特性
,虚函数作为运行过程中多态的基础,主要是针对对象的,面构造函数是在对盘产生之前运行的,因此虚构造函数是没有童义的。在C++中可以声明虚析构函数,析构函数的功能是在该类对象消亡之前进行一些必要的清理工作,如果...
为什么构造函数
不能声明为
虚函数
,析构函数可以
答:
而在构造对象期间,虚函数表还没有被初 始化,将无法进行
。虚函数的意思就是开启动态绑定,程序会根据对象的动态类型来选择要调用的方法。然而在构造函数运行的时候,这个对象的动态类型还不完整,没有办法确定它到底是什么类型,故构造函数不能动态绑定。(动态绑定是根据对象的动态类型而不是函数名,在...
为什么构造函数
不能是
虚函数
?
答:
虚函数
用于动态联编,是在运行是通过类型来觉得函数的调用~而
构造函数
是在类型完成内存分配之前调用的,
不
可能知道是哪个类型,所以不能为虚函数
虚函数
的作用,
为什么构造函数
不能是虚函数
答:
然而,
虚函数
是“向前”和“向外”进行调用。它能调用在派生类中的函数。如果我们在
构造函数
中也这样做,那么我们所调用的函数可能操作还
没有
被初始化的成员,这将导致灾难的发生。第二,。当一个构造函数被调用时,它做的首要的事情之一是初始化它的VPTR。因此,它只能知道它是“当前”类的,而完全...
为什么
会有虚析构函数,而
没有虚构造函数
?谢谢!
答:
如果是虚析构函数, 调用时,会根据对象类型动态决定调用的函数。如果,~Base()是
虚函数
, a.~Base()时,对象已确定,可以调用相应的析构函数。对于构造函数,对象类型还
没有
决定,无法确定要调用的函数。所以,
虚构造函数
是没有意义的。比如,Base a = new Base();如果Base()是虚函数,它无法确定...
构造函数可以是是
虚函数
吗?怎样使
构造函数具有虚
函数的效果?
答:
virtual Base* clone() { return new Base(*this);} //
具有虚构造函数
效果 // ……};class Derived : public Base { public:Derived (); // 确省构造函数 Derived (const Derived&); // 拷贝构造函数 // 对基类Base中的
虚函数
的重定义版本 virtual Derived * new_Obj() { return new ...
C++ 中
什么
样的函数可以作为
虚函数
答:
3.
构造函数
:都知道只有当调用了构造函数,这个对象才能产生,如果把构造函数写成
虚函数
,这时候我们的对象就没有办法生 成。更别说用对象去调用了。所以构造函数不能成为虚函数。4.友元函数:友元函数不属于类的成员函数,不能被继承。对于没有继承特性的函数
没有虚
函数的说法。5.普通函数:普通函数...
1
2
3
4
5
6
7
8
9
10
涓嬩竴椤
灏鹃〉
其他人还搜
能否声明虚构造函数
为什么需要虚析构函数
析构函数
虚析构函数
构造函数和析构函数可以被继承
构造函数可以声明为虚函数
什么是构造函数和析构函数
构造函数为什么不能是虚的
构造函数可以为虚函数