我正在尝试创建一个Person
类,我决定保持名称和性别不变。这是类定义:
class Person
{
const char *name;
int age;
const char *gen;
protected:
Person(const char *, const int ,const char *); // I want to use this class as a Base class
public:
~Person();
}
现在我的问题是如何初始化常量数据成员。我知道我必须使用初始化列表执行此任务,但即便如此,如何为new
的char指针分配内存?此外,我无法在构造函数体中初始化这些指针。请帮我找到解决方案。
答案 0 :(得分:1)
您可以使用如下的初始化列表,您不需要在此构造中分配char数组。我已经简化了课程,因为您的问题是关于const char*
。
#include <iostream>
#include <string>
class Person
{
public:
Person(const char* name, const std::string better_name) :
name(name), better_name(better_name) {}
void print_name()
{
std::cout << name << " and " << better_name << std::endl;
}
private:
const char* name;
const std::string better_name;
};
int main()
{
Person person("Billy", "Better Billy");
person.print_name();
return 0;
}