我有一个涉及不同类类型对象的应用程序。对象由指针引用。空指针表示关联对象不存在。目前调用代码比较繁琐,因为每次使用指向对象的指针时,都会检测指针值是否为空,并采取适当的措施使其为空。因为在不存在的情况下要采取的默认操作取决于对象的类型,所以我更愿意在对象本身的类中而不是在调用程序中对其进行编码。这导致如下结构:
class C
{ ...
void member_func() //non-virtual !
{ if (this) { do something with the object ... }
else { take some default action }
}
...
};
显然成员函数不能是虚函数,因为当对象不存在时查找表也不存在,虚调用就会失败。但是这段代码对于非虚拟成员函数来说是合法的 C++ 吗?对于我尝试过的编译器,它似乎可以正常工作,但我担心可能的不可移植性。在标准中,我找不到明确允许或明确禁止此类结构的条款。