cppreference.com说import { shallow } from 'enzyme'
import Accordion from './components/Accordion'
test('Accordion component', () => {
const component = shallow(<Accordion name={`Main`}/>)
expect(component.state('activeTab')).equals(0)
})
。我还检查了The default constructor is defaulted
,它在默认构造函数上没有说什么,除了声明:C++14 draft
当我运行以下代码时,我感到很惊讶。
constexpr duration() = default;
每次运行时,程序都会打印一些任意数字:chrono::seconds s;
cout << s.count() << endl;
,140737364037104
等等。
似乎140737078676496
没有很好地初始化。然后我检查了s
的编译器(GCC 4.8)的实现。该类具有int类型的数据成员(即std::chrono::duration
),没有任何类内初始化程序。构造函数是默认构造的。因此,数据成员实际上是未初始化的。这就是程序总是打印一些任意数字的原因。
以下是我的问题:
count
指定默认值,比如说0
?答案 0 :(得分:2)
由于优化,默认构建的持续时间不会初始化为零。
在ISO C++ Discussion的同一问题中引用 Vicente J. Botet Escriba :
嗨,我想是遵循这样的模式,不要为你不能使用的东西买单, 但霍华德会更好地解释它。
如果您希望将表示默认初始化为零,那么您 可以提供一个那样做
std::chrono::duration<MyInt> d; // MyInt default constructor initialize the value to zero.
首席设计师和<chrono>
时间工具的作者( Howard Hinnant )确认并进一步解释