关于“#C++#”的问题

有谁知道那几个 【 ?】 处写什么,谁能帮忙回答一下,实在是不知道该写什么

img

img

img

int commonDividor(int x,int y);
commonDividor(data1,data2)
int
int x
int y
y
k = x
&&
k

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7615223
  • 你也可以参考下这篇文章:#C/C++# 实现提取一段不规则字符串中两个双引号(其他符号)之间的内容
  • 除此之外, 这篇博客: C++中的虚函数(涉及函数重载,重写, 隐藏!!!)中的 “什么是虚函数表,什么是虚函数指针” 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在C++语言中,如果某个类有虚函数,那么大多数编译器都会自动的为其对象维护一个隐藏的“虚指针(virtul-pointer)”,虚指针指向一个全局“虚表(virtual-table)”,虚表中存放若干函数指针,这些函数指针指向类中的虚函数。请看下面这段C++语言代码:

    class A {
    public:
    	virtual void vfoo1();
    	virtual void vfoo2();
    	void foo1();
    	void foo2();
    private:
    	int prv_i1, prv_i2;
    };
    
    

    显然,类 A 有两个常规函数以及两个 int 型的成员变量,此外,它还有两个虚函数,因此编译器会创建一个虚表,虚表中存放的是函数指针,它们分别指向类 A 的虚函数,如下图所示:

    在这里插入图片描述
    这里应注意,虚表是属于类的,而不是对象的,也就是说,即使有成千上万个 A 对象,虚表也仅有一个,这些对象共用一个类虚表。编译器会自动的为每个对象创建一个隐藏的“虚指针”__vptr,它指向类 A 的虚表,如下图所示:

    在这里插入图片描述

    C++语言这样实现虚函数机制的空间开销是微乎其微的,事实上,每一个对象只需要一个额外的“虚指针”__vptr就能够调用类的虚函数。同样的,时间开销也很小:相比于常规函数的调用,虚函数的调用只不过多出了额外的两个步骤:
    获取虚表指针,得到虚表。从虚表中取出虚函数的地址

    读者应注意,这里的讨论为了突出主题,理想化了一些情况。

  • 您还可以看一下 王健伟老师的C++语言基础到进阶课程中的 互斥量概念、用法、死锁演示及解决详解小节, 巩固相关知识点