我是 C++ 的初学者,正在尝试通过查看示例来学习它。 这是一个我不完全理解其含义的类的示例定义:
class MyClass{
public:
std::string name;
void *data;
MyClass(const std::string& t_name, void *t_data) : name(t_name), data(t_data) {}
};
这是我的理解: name 和 *data 是类的变量,MyClass(...) 是构造函数。的含义:是左侧类派生自右侧类。然而,这部分代码是什么意思:
MyClass(const std::string& t_name, void *t_data) : name(t_name), data(t_data) {}
问题如下:
- 什么是“t_data”和“t_name”?它们是“数据”和“名称”的初始值吗?这里使用 t_ 的原因是什么?
- 上面一行中的 : 是什么意思?
- 该行末尾的 {} 是什么?
感谢您的帮助。 田杰
最佳答案
what are "t_data" and "t_name"? Are they initial values for "data" and "name"?
它们是传递给构造函数的参数。如果一个对象被创建为
MyClass thing("Fred", some_pointer);
然后,在构造函数中,t_name
的值为 "Fred"
而 t_data
的值为 some_pointer
.
what is the reason t_ is used here?
有些人喜欢标记参数,以便为类成员赋予不同的名称,但除非您愿意,否则没有必要这样做。
what is the meaning of : in the above line?
这标志着初始化器列表的开始,它初始化了类成员变量。以下初始化程序 name(t_name), data(t_data)
使用构造函数的参数初始化这些成员。
what is {} at the end of that line?
那是构造函数的主体,就像一个函数主体。它们中的任何代码都将在成员初始化后运行。在这种情况下,没有其他事情可做,所以 body 是空的。
关于c++ - 为初学者澄清 C++ 中类定义和实现的一些细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11457631/