【笔记】默认构造函数和零初始化
作者:互联网
默认构造函数会为类里面所有的内建类型执行零初始化(说人话就是把 int
,long long
,double
之类的东西都赋成 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