Fra*_*ser 1 c++ constructor arguments class base
我有两个类,我希望子类的每个对象都有一个名称,它作为参数传递给超类的构造函数.我该怎么做呢?
class base
{
public:
base(const char * name) {name = name;}
const char * getName() {return name;};
private:
const char * name;
};
class derived : public base
{
public:
derived(const char * name) : base(name) {}
};
Run Code Online (Sandbox Code Playgroud)
然而,
int main(int argc, char **argv)
{
derived d("test");
std::cout << d.getName();
}
Run Code Online (Sandbox Code Playgroud)
产生乱码作为控制台输出.
您需要为参数选择更好的名称name:
base(const char * p_name) {name = p_name;}
Run Code Online (Sandbox Code Playgroud)
在你的代码中,你只是为自己分配名称.
其他可能的方案:
base(const char * name) : name(name) {} // preferred one
base(const char * name) {base::name = name;}
base(const char * name) {this->name = name;}
Run Code Online (Sandbox Code Playgroud)