网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月22日漏签0天
c++吧 关注:615,930贴子:2,110,895
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 120回复贴,共2页
  • ,跳到 页  
<<返回c++吧
>0< 加载中...

谁能简单说一下虚函数

  • 只看楼主
  • 收藏

  • 回复
  • 沈京斌
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
之前学过java,java中的虚函数是没有函数体的,但是c++中虚函数可以有函数体。我弄不清c++的虚函数有什么用?c++没有虚函数有什么不便?


  • BlueWanderer
  • ==
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Java里没函数体的那个叫抽象方法,对应C++里的纯虚函数。Java里所有能被子类重写的方法都是虚方法。或者你可以粗略并且极端不准确地(Java那边)认为C++里通过virtual标记虚函数,Java里通过final标记非虚方法。


2025-05-22 14:44:19
广告
  • 天佐少年
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
跟技术朋友做了个公众号叫“猿人部落”,关注微信号:yuanrenclub,免费解答各类IOS紧急问题,提供诊断和思路。欢迎支持交流!


  • 暗窥六道
  • ==
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你这样理解:Java 里每个函数都是虚函数。


  • 温柔气质你超哥
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶顶顶


  • 二哈子
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
虚函数主要用来实现多态啊,通过在子类里对基类虚函数的重写可以实现不同的结果。举个例子,基类里有个算面积的虚函数,子类重写这个虚函数,可以计算三角形面积,另外一个子类通过重写可以计算圆的面积,再另外一个子类重写之后可以计算正方形面积,都需要一个志向子类对象的基类指针对虚函数进行调用,实现多态。


  • l-zh
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <iostream>
class A
{};
template<class T>
void print(A&,T const&s)
{
std::cout<<"A "<<s;
}
class B
{};
template<class T>
void print(B&,T const&s)
{
std::cout<<"B "<<s;
}
template <class P>
void process(P&p)
{
print(p,"..\n");
}
int main()
{
A a;
B b;
process(a);
process(b);
return 0;
}
静态多态
回5楼


  • grf123
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在C++中,如果要让子类复写(重载)父类的方法,那么父类中这个方法必须要声明为虚函数。纯虚函数则是在这个基础上,要求子类必须实现这个函数,纯虚函数用于定义接口,只是说明"能做什么"而不说明怎么做。虚函数则相当于父类给一个示范,自己实现也可以。非虚函数,则没有重载这个性质。


2025-05-22 14:38:19
广告
  • 幻の上帝
  • ->*
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
噗,度娘提醒抽风成这样也是头一回见……


  • 幻の上帝
  • ->*
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
回复 放假那边 :知道LC不想蹲在C艹的圈子里却不知道parametric polymorphism?我突然对你的知识体系构成有点好奇。


  • 幻の上帝
  • ->*
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
那么正好。在LZ的问题有定论(这个貌似很简单)之前,为了避免不必要的误会,麻烦 @放假那边 解释一些问题——老实说,我有些看不懂你之前在说什么。
解释一下你所谓的“教科书式概念”的外延。
解释一下你所谓的“内存模型”。
解释一下你所谓的“静态”和“上下文”的关系。
解释一下为什么你会在“什么是图灵完备”的话题后面跟上memory model这个表面上八竿子打不着的东西。
解释一下你知道的“元编程”和这里话题的关系——特别是跟C++无关的部分(因为看来你不想“沉浸在c++的世界里”)。
解释一下“数学自动机”是什么鬼。
顺便,关于什么是“内存模型”这样的问题,“谁教你的基本概念”“是哪本你奉为宝典的书”是有人为确定的权威解释的。然而你所谓的内容从上下文来看似乎各种不搭调(特别地,考虑你还提到了memory order)。我在这里重复强调一遍,除了希望弄清你想要表达什么以外,也顺便避免潜在的误导。
@清明雨上1019 给你提个建议——因为不是在评审现有材料,解释起来给关键字而不必要先给出处,也能避免一些现在这种被强行跑题的状况。所谓静态多态直接“CRTP”就行。不手残的不用一分钟就会知道是在说啥。


  • 98765mm605
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
主要是继承里面的,《C++高级编程》里面比较推荐使用


  • 尘子
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
当没有虚函数的时候,通过对象或者引用或者指针的方式来调用函数的时候,调用的总是该对象或者引用或者指针的类型的类函数,当是虚函数的时候,则通过引用或者指针调用的是该指针或者引用所引用/所指向的类型的类函数


  • 尘子
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
而且虚函数是在运行时连接函数的


2025-05-22 14:32:19
广告
  • 佐鸣万万岁
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
签到签到签到签到签到签到签到签到签到签到

用我一生换你十年天真无邪~~


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 120回复贴,共2页
  • ,跳到 页  
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示