鱼C论坛

 找回密码
 立即注册
查看: 1223|回复: 2

c++初始化列表申请空间问题

[复制链接]
发表于 2022-3-20 12:17:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
屏幕截图 2022-03-20 121406.png
为啥这里会报内存不足的错误,而且是偶尔会报
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-20 12:57:59 | 显示全部楼层
本帖最后由 人造人 于 2022-3-20 13:06 编辑
成员初始化的顺序:

成员初始化的顺序和它们在类定义中出现的顺序一致,构造函数初始值列表中的前后位置不会影响实际的初始化顺序。

https://blog.csdn.net/growth_pat ... tm_relevant_index=5

构造函数初始化列表仅用于初始化成员的值,并不指定这些初始化执行的次序。成员被初始化的次序就是定义成员的次序。第一个被定义的成员先被初始化,依次类推。一般,初始化的顺序无关紧要,然而,如果一个成员是根据其他成员而初始化,则成员的初始化顺序是至关重要的。

https://www.cnblogs.com/beeasy/p ... utm_medium=referral
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-20 13:05:42 | 显示全部楼层
你的编译器对这种情况一声不吭?
还是说你根本就不看警告?
还有,提问题要发代码
$ 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) {}
      |     ^~~~~~
$
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 04:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表