c++ 虚函数直接实例化。。
这样实现可以吗?virtualvoidsetStart(constDate&start){this->start=start;}virtualvoidsetClose(c...
这样实现可以吗?
virtual void setStart (const Date &start){
this->start=start;
}
virtual void setClose (const Date &close){
this->close=close;
}
virtual void setTitle (string title){
this->title=title;
}
virtual void setBody (string body){
this->body=body;
}
virtual void setNumber (int number){
this->number=number;
}
virtual void setEmail (string email){
this->seller_email=email;
}
virtual void setQuantity (int quantity){
this->quantity=quantity;
}
还是说必须要用一个类去继承才能实现。
如果按我这样生产对象的时候应该不会报错吧 展开
virtual void setStart (const Date &start){
this->start=start;
}
virtual void setClose (const Date &close){
this->close=close;
}
virtual void setTitle (string title){
this->title=title;
}
virtual void setBody (string body){
this->body=body;
}
virtual void setNumber (int number){
this->number=number;
}
virtual void setEmail (string email){
this->seller_email=email;
}
virtual void setQuantity (int quantity){
this->quantity=quantity;
}
还是说必须要用一个类去继承才能实现。
如果按我这样生产对象的时候应该不会报错吧 展开
4个回答
展开全部
指针的类型是可以强行转来转去的。普通情况你转什么类型就调对应类型的同名函数。但是虚函数实现多态后,尽管可能你把指针转成父类的类型,但是因为创建的时候是子类的类型,它还是会调用子类的这个虚函数。
这样可以统一代码且正确运用子类的新特性。
也因为如此,如果父类虚函数不做实现而=0成为纯虚函数,那么父类就不可以实例化,这个没有实现的虚函数也永远不会调用。因为根据多态的动态联编,总是会调用实例化了的子类的该方法。指针强行转成父类也不会调用纯虚函数。
这样可以统一代码且正确运用子类的新特性。
也因为如此,如果父类虚函数不做实现而=0成为纯虚函数,那么父类就不可以实例化,这个没有实现的虚函数也永远不会调用。因为根据多态的动态联编,总是会调用实例化了的子类的该方法。指针强行转成父类也不会调用纯虚函数。
展开全部
你这样做的“虚函数”的含义是什么?没有类,哪里来的this?
虚函数是类继承中特有的一种用法,你如果明白虚函数的意义,就不会这样定义你的虚函数了。
虚函数是类继承中特有的一种用法,你如果明白虚函数的意义,就不会这样定义你的虚函数了。
追问
有类,我没贴全。。。。。
也有private 成员
追答
你所谓的“直接实例化”和“这样”到底和你认为的“常规方法”有什么不同。如果在类内部,看不出奇怪的地方
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的。 要用继承才可以的 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
经过试验室可以直接实现的。
#include<stdio.h>
class b
{
public:
virtual int test(int a)
{
return a;
}
};
int main()
{
class b m_b;
printf("[%d]\n",m_b.test(23));
return 0;
}
编译运行都OK.
含有纯虚函数的类是不可以派生对象的.
virtual <类型><函数名>(<参数表>)=0;
#include<stdio.h>
class b
{
public:
virtual int test(int a)
{
return a;
}
};
int main()
{
class b m_b;
printf("[%d]\n",m_b.test(23));
return 0;
}
编译运行都OK.
含有纯虚函数的类是不可以派生对象的.
virtual <类型><函数名>(<参数表>)=0;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询