其他分享
首页 > 其他分享> > 【笔记】默认构造函数和零初始化

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

作者:互联网

默认构造函数会为类里面所有的内建类型执行零初始化(说人话就是把 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 里的元素清零。

标签:初始化,built,默认,will,members,initialized,构造函数,MyPodClass
来源: https://www.cnblogs.com/huaruoji/p/16137532.html