滑蒻稽的博客

【笔记】默认构造函数和零初始化

默认构造函数会为类里面所有的内建类型执行零初始化(说人话就是把 intlong longdouble 之类的东西都赋成 0),但怎么做才能激发默认构造函数呢?

这个问题里面有很好的解释:Does the default constructor initialize built-in types?

仅当用户调用默认构造函数的时候才会执行零初始化。直接创建一个类将会执行编译器提供的隐式构造函数,它不会执行任何操作(其实可以认为编译器提供的隐式构造函数不是默认构造函数)。

示例:

MyNonPodClass instance1;//built in members will not be initialized
MyPodClass instance2;//built in members will not be initialized
MyPodClass instance3 = MyPodClass();//built in members will be zero initialized
MyPodClass* instance4 = new MyPodClass;//built in members will not be initialized
MyPodClass* instance5 = new MyPodClass() ;//built in members will be zero initialized

所以,当你创建一个你的矩阵类,想要做矩阵快速幂的时候,请使用 mat a = mat(); 来为 mat 里的元素清零。

posted @ 2022-04-12 21:20  huaruoji  阅读(168)  评论(0编辑  收藏  举报