TJ1*_*TJ1 0 c++ constructor class derived-class
我是C++的初学者,我试图通过查看示例来学习它.这是一个我完全不理解其含义的类的示例定义:
class MyClass{
public:
std::string name;
void *data;
MyClass(const std::string& t_name, void *t_data) : name(t_name), data(t_data) {}
};
Run Code Online (Sandbox Code Playgroud)
这是我理解的:name和*data是类的变量,MyClass(...)是构造函数.意思是:左侧类派生自右侧类.但是,这部分代码的含义是什么:
MyClass(const std::string& t_name, void *t_data) : name(t_name), data(t_data) {}
Run Code Online (Sandbox Code Playgroud)
以下是问题:
谢谢您的帮助.TJ
什么是"t_data"和"t_name"?它们是"数据"和"名称"的初始值吗?
它们是传递给构造函数的参数.如果对象被创建为
MyClass thing("Fred", some_pointer);
Run Code Online (Sandbox Code Playgroud)
然后,在构造函数中,t_name具有值"Fred"并t_data具有值some_pointer.
这里使用t_的原因是什么?
有些人喜欢标签的参数给他们不同的名称类的成员,但有没有必要做,除非你想.
是什么意思:在上面这行?
这标志着初始化列表的开始,它初始化了类成员变量.以下初始化name(t_name), data(t_data)程序使用构造函数的参数初始化这些成员.
该行尾的{}是什么?
这是构造函数的主体,就像函数体一样.在成员初始化之后,将运行其中的任何代码.在这种情况下,没有别的事可做,所以身体是空的.
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |