小编Yuk*_*uki的帖子

虚拟继承混淆

我正在阅读关于继承的内容,我有一个我几个小时都无法解决的重大问题:

鉴于一个类Bar是一个具有virtual函数的类,

class Bar
{
    virtual void Cook();
};
Run Code Online (Sandbox Code Playgroud)

有什么不同:

class Foo : public Bar
{
    virtual void Cook();
};
Run Code Online (Sandbox Code Playgroud)

class Foo : public virtual Bar
{
    virtual void Cook();
};
Run Code Online (Sandbox Code Playgroud)

?谷歌搜索和阅读的时间提供了大量有关其用途的信息,但实际上没有人告诉我两者之间有什么区别,只是让我更加困惑.

c++ inheritance virtual-inheritance c++11

5
推荐指数
2
解决办法
809
查看次数

仅在发布版本中删除功能

是否有任何方法可以从Release版本中删除一行代码,但是将它保留在Debug构建中而没有丑陋的#if语句?

例如,有没有办法在不使用所有这些if语句的情况下实现下面代码的等价物?

#if DEBUG
    Log.Log("I am in debug mode");
#endif
Run Code Online (Sandbox Code Playgroud)

如果我在Log.Log函数中有条件的运行时检查,那么字符串"我在调试模式"将保留在我编译的可执行文件中,这正是我想要的.

c++

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

标签 统计

c++ ×2

c++11 ×1

inheritance ×1

virtual-inheritance ×1