C++ 通过成员访问表达式调用虚拟函数

C++ 通过成员访问表达式调用虚拟函数,c++,base-class,C++,Base Class,我是按照以下规则来的N4296::12.7/4[class.cdtor]: 如果虚拟函数调用使用显式类成员访问 (5.2.5)且对象表达式指x的完整对象 或该对象的一个基类子对象,但不是x或其子对象之一 基类子对象,行为未定义 这是什么意思?你不能举例说明一下吗?这对我来说有点难以想象。若你们还想知道,这指的是当你们在基类的析构函数中,你们指的是整个对象中已经被破坏的东西。例如: struct Derived; struct Base { Derived &der; B

我是按照以下规则来的
N4296::12.7/4[class.cdtor]

如果虚拟函数调用使用显式类成员访问 (5.2.5)且对象表达式指x的完整对象 或该对象的一个基类子对象,但不是x或其子对象之一 基类子对象,行为未定义


这是什么意思?你不能举例说明一下吗?这对我来说有点难以想象。

若你们还想知道,这指的是当你们在基类的析构函数中,你们指的是整个对象中已经被破坏的东西。例如:

struct Derived;

struct Base {
    Derived &der;
    Base(Derived &d): der(d) {}
    ~Base();
};

struct Derived: Base {
    int value;
    Derived(): Base(*this) {}
};

#include <iostream>

Base::~Base() {
    std::cout <<
        der.value // this is the undefined behavior! der.value is *gone*
        << std::endl;
}
struct派生;
结构基{
导出&der;
基(派生&d):der(d){}
~Base();
};
派生结构:基{
int值;
派生():基(*this){}
};
#包括
Base::~Base(){

std::这句话后面难道没有一个例子吗?事实上,你十个月前没有问过吗?@t.C.其实忘了这件事。我想知道你是怎么记得的。。。