注册 登录
编程论坛 C++教室

大家好,请问列表初始化应该怎么理解

后卿 发布于 2023-05-07 11:10, 527 次点击
程序代码:

class seeObject
{
public:
    int x;
    seeObject()
    {
        
    }
    seeObject(int val) :x{ val }
    {
        
    }
};
class creature:protected seeObject
{
protected:
    int hp;
public:
    creature() :seeObject{ 1200 }
    {
    }
};

请问:1.这里的seeObject{ 1200 },能不能写成seeObject(1200 ),个人觉得它应该写成seeObject(1200 ),就好比调用了seeObject的有参构造,
2.没看懂这个seeObject{ 1200 }是什么语法,那么 creature() :seeObject{ 1200 }应该把它称作委托构造还是列表初始化呢,如果是成员列表初始化,是将1200自动传递给了val么?
3.seeObject(int val) :x{ val }这里的x{val}能不能写成x(val)?

[此贴子已经被作者于2023-5-7 11:14编辑过]

2 回复
#2
东海ECS2023-05-07 11:16
1. 可以.
2. seeObject{1200}是一种统一列表初始化语法, 用于对象的初始化(成员列表初始化). creature类的构造函数使用初始化列表语法来初始化基类成员seeObject的x属性.
3. 可以.

[此贴子已经被作者于2023-5-7 11:18编辑过]

#3
后卿2023-05-07 11:47
回复 2楼 东海ECS
对于第一点,如果我写成seeobject(100),这个是称作委托构造还是成员初识化列表
对于第二点,列表初始化还能这么写么,我之前写的都是将成员变量进行成员列表初始化,没试过这种写法

[此贴子已经被作者于2023-5-7 11:53编辑过]

1