如何在成员初始化列表中为const char*类成员分配内存

How to allocate memory to const char* class member in member initialization list

本文关键字:成员 char const 分配 内存 初始化 列表      更新时间:2023-10-16

如何在成员初始化列表中为const char*类成员分配内存?

class A {
    const char *member;
public: 
    A(const char *m);
}
A::A(const char *m):member(m) {
//I want to allocate memory to member in member initialization list
}

试试下面的

class A 
{ 
    const char *member; 
public: 
    A(const char *m); 
};
A::A(const char *m) : member( new char[std::strlen( m ) + 1] ) 
{ 
    std::strcpy( member, m );
}

考虑数据成员member本身不是常量。

或者你甚至可以这样写

#include <iostream>
#include <cstring>
struct A
{
    const char *s;
    A( const char *s ) : s( std::strcpy( new char[std::strlen( s ) + 1], s ) )
    {
    }
    ~A() 
    { 
        delete [] s;
    }       
};
int main()
{
    A a( "Hello, World!" );
    std::cout << a.s << std::endl;
    return 0;
}