为什么我不能这样做?
class A
{
public:
int a, b;
};
class B : public A
{
B() : A(), a(0), b(0)
{
}
};
Run Code Online (Sandbox Code Playgroud) 默认情况下,libavformat将错误消息写入stderr,如:
Estimating duration from bitrate, this may be inaccurate
我怎么能把它关掉?或者更好的是,把它管道到我自己的整洁记录功能?
编辑:将stderr重定向到其他地方是不可接受的,因为我需要它用于其他日志记录目的,我只是希望libavformat不写入它.
可能重复:
我应该在构造函数或外部构造函数中初始化变量
我想知道,这是一个更好的做法,为什么.我应该在声明时初始化类字段,还是应该在构造函数中执行?鉴于它是一个简单的单行初始化.
class Dude
{
String name = "El duderino";
Dude() {
// irrelevant code
}
}
Run Code Online (Sandbox Code Playgroud)
与
class Dude
{
String name;
Dude() {
name = "El duderino";
// irrelevant code
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我知道其中一种样式优先于另一种样式的情况,例如执行可能引发异常的初始化代码的情况.我在这里谈论的是两种风格完全相同的情况.两种方式都可以完成同样的任务.我应该使用哪个?