C++11 在构造函数中使用列表初始化 我最近开始学习C++。因此,我有一个疑问: 第一部分:>BR>,在阅读C++中的列表初始化时,我了解了直接初始化和复制初始化的区别。 string name = "Deb"; //Copy string name("Deb"); //Direct 所以,我想,好吧,坚持直接初始化是一件好事,因为C++的引物建议复制初始化有点像创建一个临时变量。

C++11 在构造函数中使用列表初始化 我最近开始学习C++。因此,我有一个疑问: 第一部分:>BR>,在阅读C++中的列表初始化时,我了解了直接初始化和复制初始化的区别。 string name = "Deb"; //Copy string name("Deb"); //Direct 所以,我想,好吧,坚持直接初始化是一件好事,因为C++的引物建议复制初始化有点像创建一个临时变量。,c++11,syntax,C++11,Syntax,学习第二部分:当我开始学习构造函数时,大家告诉我的第一件事是-它有助于初始化对象成员。 因此,我再次使用了列表初始化。这会产生错误。为什么? class Name{ string personName; Name(){ personName("Deb"); } }; 但这些替代方法可行: personName="Deb"; 或 第一部分,你可能想读一读。对于第二部分,您得到的错误告诉您正在尝试将您的成员变量personName用作可调用变量。因此,此行不初始化任何内容pers

学习第二部分:
当我开始学习构造函数时,大家告诉我的第一件事是-它有助于初始化对象成员。

因此,我再次使用了列表初始化。这会产生错误。为什么?

class Name{
 string personName;
 Name(){
   personName("Deb");
   }
};
但这些替代方法可行:

personName="Deb";


第一部分,你可能想读一读。对于第二部分,您得到的错误告诉您正在尝试将您的成员变量
personName
用作可调用变量。因此,此行不初始化任何内容<构造函数主体中的code>personName=“Deb”为成员变量分配一个新值,该变量先前已初始化为空字符串。最后一个代码片段是在默认构造函数中正确初始化
personName
的一种方法。@lubgr:谢谢,我会仔细检查这些答案:)@lubgr是的,你是对的。所以,我的问题是为什么它不考虑作为一个初始化而不是可调用的。我的意思是它背后有什么逻辑,或者C++只是用这种方式来运行。`NAME():人名(“Deb”){/*.*/}是一个语法,用于初始化构造函数定义中的成员变量。这里没有真正的逻辑,只有语言规则。但在构造函数的花括号内,您正在函数范围内编写普通代码(特殊成员函数,但仍然是函数)。在这个函数(构造函数)体中,没有关于如何处理成员变量的特殊规则。谢谢,这很有意义。
Name():personName("Deb");