c++中虚函数的定义及用法?
定义了一个类z,如classz:publicx,publicy在x和y类中都有virtualoidfun()虚函数,在主函数创建如下:z*obj=newz();obj->...
定义了一个类z,如class z:public x,public y在x和y 类中都有virtual oid fun()虚函数,在主函数创建如下:z *obj=new z();obj->fun();我想问一下z *obj=new z()这句中z()括号的意义是什么?还有这是z的对象objz在调用fun函数,为什么书上说是使用基类指针调用虚函数fun()?
展开
2个回答
展开全部
z *obj=new z()就代表调用无参构造函数,不加括号也没问题
如果真如你描述的一样,是
z *obj=new z();obj->fun();
的话,那么书一定是有问题的,因为obj毫无疑问是派生类指针
更多追问追答
追问
我在类z中没有定义构造函数啊?就算是系统自动调用的话应该也没有括号啊?我身边的人说括号的意义是指定类z对象的个数,还有书上说虚函数只能通过基类指针调用
追答
调用默认构造函数可以这样加上无用的括号而已,“指定类z对象的个数”完全是胡说八道
“虚函数只能通过基类指针调用”这句话本来就有问题,我用
z a;
a.fun();
大概调用不了这个函数了?
只是用基类指针调用的时候才能【体现】出和非虚函数的区别而已
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询