相关疑难解决方法(0)

替代虚拟机制实现?

C++支持通过虚拟机制进行动态绑定.但据我所知,虚拟机制是编译器的实现细节,标准只是指定了在特定场景下应该发生的行为.大多数编译器通过虚拟表和虚拟指针实现虚拟机制.是的,我知道这是如何工作的,所以我的问题不是关于虚拟指针和表的实现细节.我的问题是:

  1. 是否有任何编译器以虚拟指针和虚拟表机制以外的任何其他方式实现虚拟机制?据我所见,最多(阅读g ++,Microsoft visual studio)通过虚拟表,指针机制实现它.那么实际上还有其他任何编译器实现吗?
  2. 在sizeof只有一个虚函数的任何类的将是一个指针(vptr的内部尺寸this)上编译,所以考虑到虚拟PTR和TBL机制本身是编译器实现,将这个说法我在上面做永远是真的吗?

c++ virtual-functions vtable vptr

48
推荐指数
4
解决办法
4837
查看次数

C++:为什么struct\class需要一个虚方法才能变成多态?

在这个问题之后,我想知道为什么C++中的struct\class必须有一个虚方法才能变成多态.

强制虚拟析构函数是有道理的,但如果根本没有析构函数,为什么要使用虚方法呢?

c++ polymorphism virtual-functions

14
推荐指数
2
解决办法
5733
查看次数

在版本控制下放置visual studio数据库项目时,是否需要.dat文件?

我有一个受版本控制(git)的visual studio 2008数据库项目.当我尝试合并我的分支时,我在project_name.dat中遇到冲突.

所以我的问题是:

  1. 什么是project_name.dat文件?
  2. 我需要它吗?那我可以把它从我的版本控制中删除

version-control database-project visual-studio

4
推荐指数
1
解决办法
1337
查看次数

如果有虚拟方法,是否会创建vtable?

如果我创建一个非常简单的类,如下所示:

class A
{
  public :
    virtual void foo()
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

(没有虚拟析构函数)是编译器要创建vtable吗?或者现代编译器是否足够聪明以识别这种情况(可能是一个糟糕的复制和粘贴)而不是为这些类添加虚拟表?

c++ vtable

2
推荐指数
1
解决办法
247
查看次数