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;
}
还是说必须要用一个类去继承才能实现。
如果按我这样生产对象的时候应该不会报错吧

指针的类型是可以强行转来转去的。普通情况你转什么类型就调对应类型的同名函数。但是虚函数实现多态后,尽管可能你把指针转成父类的类型,但是因为创建的时候是子类的类型,它还是会调用子类的这个虚函数。
这样可以统一代码且正确运用子类的新特性。
也因为如此,如果父类虚函数不做实现而=0成为纯虚函数,那么父类就不可以实例化,这个没有实现的虚函数也永远不会调用。因为根据多态的动态联编,总是会调用实例化了的子类的该方法。指针强行转成父类也不会调用纯虚函数。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-28
你这样做的“虚函数”的含义是什么?没有类,哪里来的this?
虚函数是类继承中特有的一种用法,你如果明白虚函数的意义,就不会这样定义你的虚函数了。追问

有类,我没贴全。。。。。
也有private 成员

追答

你所谓的“直接实例化”和“这样”到底和你认为的“常规方法”有什么不同。如果在类内部,看不出奇怪的地方

第2个回答  2012-10-28
是的。 要用继承才可以的 。
第3个回答  推荐于2016-05-22
经过试验室可以直接实现的。
#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;本回答被提问者采纳

c++中的纯虚函数与虚函数在应用上有什么差别??
1、一方面,从语法上说是不清晰的,你的类的使用者在在看到你的类的定义的时候无法确定哪些函数是没有提供实现的虚函数,而如果你写成纯虚函数就非常明确,一眼就可以看出来。2、另一方面,虚函数不提供实现,如果使用者试图实例化这个类,在编译阶段无法发现错误,必须等到链接阶段才能发现,而且链接错误...

C++中虚函数的作用是什么?它应该怎么用呢?
C++中虚函数的作用:1、简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。2、实现多态性,多态性是将接口与实现进行分离。3、当基类指针指向一个子类对象,通过这个指针调用子类和基类同名成员函数的时候,基类声明为虚函数就会调子类的这个函数,不声明就会调用基类的。C++中虚函数的用法:1、...

我没有学过c++,有没有厉害的人,教一教小弟,下面的这段代码的每一句,有...
这是一个头文件啊,声明了一堆函数,没干啥事,cocos2dx?不太懂游戏开发,但我觉得实现的代码是不会给你看的,这个文件需要#include使用,#include以后就可以用这里边声明的类了,使用方法可以是直接实例化这个类,或者继承这个类自己重新写这个类里边的虚函数。

C++中虚函数和纯虚函数的区别
就像动物无法实例化为具体对象,老虎和狮子可以继承动物的特性(即父类的接口),从而有自己的实例化对象。以下为虚函数和纯虚函数的区别:1. 声明了虚函数的类,该函数是已实现的,即使为空实现。其作用是允许这个函数在子类中重写,以便编译器可以使用动态绑定实现多态(即父类指针指向子类对象,调用子...

虚函数 纯虚函数是一个东西吗?
关于实例化一个类: 有纯虚函数的类是不可能生成类对象的,如果没有纯虚函数则可以。比如: class CA { public: virtual void fun() = 0; \/\/ 说明fun函数为纯虚函数 virtual void fun1(); }; class CB { public: virtual void fun(); virtual void fun1(); }; \/\/ CA,CB类的实现 ......

C++ 抽象类能实例化吗?
C++中的抽象类是一个关键概念,它不能直接实例化。试图使用new运算符创建一个抽象类的对象会导致编译错误。抽象类通常用于表示问题领域的抽象概念,通过纯虚函数或抽象方法来定义一组共性的行为。在C++中,这些类是不完整的,仅作为其他类的基类使用,用于类型隐藏和充当全局变量的角色。抽象类的特点在于它...

想问下C++纯虚函数相比于虚函数的直接作用
{ public:virtual SayHi()= 0;\/\/无法实现,也没有必要实现。当然写个空的虚函数也行,但是万一我的函数需要返回值怎么办?强行写个返回值?C++的设计者当然不会允许这种情况出现。完全可以没有数据成员,因为本来它就是抽象的类,其实也就是接口。};class Dog :public Animal { public:virtual SayHi...

在c++中,类的成员函数直接写成virtual bool good()=0;求大神解释一下后...
虚成员函数=0;表示本类不对这个成员函数进行实现,即该成员函数没有函数体{ },这种函数就叫纯虚函数。一个类中只要有一个成员函数是纯虚函数,就成了不能实例化的虚类,相当于接口,只能给派生类继承,让派生类来进行函数覆盖重写这个虚方法。

为什么C++的构造函数不可以是虚函数,而析构
1、为什么构造函数不可以是虚函数 ①从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。②从使用角度 ...

C++ 抽象类能实例化吗?
1.抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。2.抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看...

相似回答