C++中 什么是虚方法

这有什么用... 这有什么用 展开
 我来答
御坂妹妹15842
推荐于2017-09-28 · TA获得超过326个赞
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:227万
展开全部

就是加上virtual关键字的类成员函数,效果和纯虚函数有所差别:

1 定义了纯虚函数的类是抽象类,不能被实例化。而定义了虚函数的类可以。

2 定义了虚函数的基类指针调用虚函数时,如果指向派生类并且派生类覆盖定义了虚函数,那么会调用派生类的这个函数。否则调用基类的这个函数。

3 如果派生类覆盖定义了基类的函数(没有virtual),那么基类指针指向派生类的时候调用的依然是基类的函数。

class A
{
public:
virtual int show(){}
int func(){}
};
class B:public A
{
public:
int func(){}
int show(){}
};
int main(int argc, char const *argv[])
{
A * ptr = new B();
ptr->func();//调用基类的func
ptr->show();//调用派生类的show
return 0;
}

这里面扯到一个多态问题,你自己去百度看看比较好。

嫑名字可以吗
推荐于2017-09-17 · TA获得超过389个赞
知道答主
回答量:90
采纳率:0%
帮助的人:8.2万
展开全部

C++中并没有方法的概念。方法(method)实际上是java的概念。在C++中,方法被称为函数。

所以虚方法的准确说法是虚函数。在C++中,是一种特别的类成员函数。

在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};

实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。

也就是说被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。

示例代码:

#include<iostream>
using namespace std;
class A
{
    public:
        virtual void print(){cout<<"This is A"<<endl;}
};
class B : public A
{
    public:
    void print(){cout<<"ThisisB"<<endl;}
};
 
int main()
{
    A a;
    B b;
    a.print();
    b.print();
    ((A*)&b)->print();
    return 0;
}

在这个代码中,A的成员函数print就是虚函数。当被继承时,print函数将被B中的print函数覆盖。这时在B的对象b中,使用基类指针访问print,结果仍是B的print输出。

于是第三行会输出ThisisB。 

而如果A中的print不加virtual,这个输出将是this is A。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gamewoxue
2014-01-26 · TA获得超过172个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:106万
展开全部
加了virtual关键字的类成员函数,用处嘛,主要是用在多态的情况,不要问我啥叫多态,自己去查资料
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
未来还是梦
2015-10-30 · TA获得超过9452个赞
知道大有可为答主
回答量:3160
采纳率:89%
帮助的人:429万
展开全部
虚函数提供一类操作的统一命名。
由于类包含的内容比较广,下面还有不同的子类,虽然操作的名称相同,但是对于不同的子类,其具体实现不同。因此,在本类中无法统一表达;但是另一方面,此类操作具有共性,因此使用一个统一的命名。其具体的实现,有各个不同的子类完成。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式