空指针上的c ++ no-op函数

时间:2017-09-26 13:36:47

标签: c++

简而言之,问题是:如果我在空指针上调用no-op函数就是那个UB?

粗略地说,我想创建一个轻量级的类,它根据构建标志变成no-ops。例如:

class RealObject {
  void foo() { /* do something real*/ }
};

class DummyObject {
  inline void foo() {}
};

#ifdef DO_REAL
RealObject* obj = new Object();
#else
DummyObject* obj = nullptr;
#endif

obj->foo();

我的直觉告诉我,在DummyObject被使用的情况下,它违反了标准中的某些内容(不知道究竟是什么),但由于foo()在实践中是无操作的,它仍然可以按预期工作。

有人可以在这种情况下澄清规则吗?感谢

0 个答案:

没有答案