首页 > 解决方案 > 虚函数上的 std::is_trivially_copyable_v

问题描述

我尝试以下代码,它只是打印false.

class A
{
    virtual void func() {}
};

std::cout << std::is_trivially_copyable_v<A>;

为什么虚函数会影响复制?虚拟表指针可以简单地复制。

标签: c++

解决方案


来自class.prop

一个可简单复制的类是一个类:

其中每个符合条件的复制构造函数、移动构造函数、复制赋值运算符和移动赋值运算符都是微不足道的......

class.copy.assign

如果 ... 类 X 的复制/移动赋值运算符是微不足道的

X 类没有虚函数...

所以你的类A是不可复制的,因为它有一个虚函数func


推荐阅读