我正在阅读关于继承的内容,我有一个我几个小时都无法解决的重大问题:
鉴于一个类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)
?谷歌搜索和阅读的时间提供了大量有关其用途的信息,但实际上没有人告诉我两者之间有什么区别,只是让我更加困惑.
是否有任何方法可以从Release版本中删除一行代码,但是将它保留在Debug构建中而没有丑陋的#if语句?
例如,有没有办法在不使用所有这些if语句的情况下实现下面代码的等价物?
#if DEBUG
Log.Log("I am in debug mode");
#endif
Run Code Online (Sandbox Code Playgroud)
如果我在Log.Log函数中有条件的运行时检查,那么字符串"我在调试模式"将保留在我编译的可执行文件中,这正是我不想要的.