初始化类的常量字符指针

时间:2016-04-04 15:22:47

标签: c++ class pointers const

我正在尝试创建一个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指针分配内存?此外,我无法在构造函数体中初始化这些指针。请帮我找到解决方案。

1 个答案:

答案 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;
}