c++初始化列表申请空间问题
为啥这里会报内存不足的错误,而且是偶尔会报 本帖最后由 人造人 于 2022-3-20 13:06 编辑
成员初始化的顺序:
成员初始化的顺序和它们在类定义中出现的顺序一致,构造函数初始值列表中的前后位置不会影响实际的初始化顺序。
https://blog.csdn.net/growth_path_/article/details/82717260?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_aa&utm_relevant_index=5
构造函数初始化列表仅用于初始化成员的值,并不指定这些初始化执行的次序。成员被初始化的次序就是定义成员的次序。第一个被定义的成员先被初始化,依次类推。一般,初始化的顺序无关紧要,然而,如果一个成员是根据其他成员而初始化,则成员的初始化顺序是至关重要的。
https://www.cnblogs.com/beeasy/p/6372782.html?utm_source=itdadao&utm_medium=referral 你的编译器对这种情况一声不吭?
还是说你根本就不看警告?
还有,提问题要发代码
$ cat main.cpp
#include <iostream>
class test_t {
public:
test_t(int i): p(i + 1), i(i) {}
private:
int i;
int p;
};
int main() {
test_t t(10);
return 0;
}
$ g++-debug -o main main.cpp
main.cpp: In constructor ‘test_t::test_t(int)’:
main.cpp:8:9: warning: ‘test_t::p’ will be initialized after [-Wreorder]
8 | int p;
| ^
main.cpp:7:9: warning: ‘int test_t::i’ [-Wreorder]
7 | int i;
| ^
main.cpp:5:5: warning: when initialized here [-Wreorder]
5 | test_t(int i): p(i + 1), i(i) {}
| ^~~~~~
$
页:
[1]