我可以使用先前设置的变量来创建下一个类成员吗?

时间:2019-04-04 07:37:52

标签: c++ constructor

我试图更好地理解构造函数在C ++中的工作方式。基本上,我想知道在用构造函数中的成员初始化器列表初始化类时,是否按顺序设置了所有内容。

// Our <!DOCTYPE html> node
const doctype = document.implementation.createDocumentType('html', '', ''); 
// A new HTML5 document
const doc = document.implementation.createDocument("", 'html', doctype);

// We need to force null NS
const body = doc.createElementNS(null, 'body');
body.appendChild(doc.createTextNode('hello'));

doc.documentElement.appendChild(body);

const str = (new XMLSerializer).serializeToString(doc);

console.log(str);

我希望这是一种有效的机制,但是在某些特殊情况下,它可能行不通。

1 个答案:

答案 0 :(得分:1)

非静态成员初始化的顺序由它们在类定义中出现的顺序确定。这与在构造函数初始化程序列表中列出这些成员的顺序无关。

您的示例;

Constructor(int number1, int number2) : 
        m_number1(number1),
        m_number2(m_number1 > 0 ? 0 : number2)
{
}
如果在类定义中m_number2出现在m_number1之前,

将无法正常工作。

如果类定义得到更新,则依赖于特定顺序可能会带来风险-因为更新会更改非静态成员在类声明中出现的顺序(例如,如果某些团队成员确定成员在逻辑上进行了分组)不同的方式。)