【发布时间】:2014-08-08 19:15:05
【问题描述】:
我今天学习了 C++ 11 非常有用的新特性,它允许在类声明中直接初始化数据成员:
class file_name
{
public:
file_name(const char *input_file_name);
~file_name();
private:
char *file_name=nullptr; //data_member is initialized to nullptr;
char *Allocator(int buffer_size); //code to dynamically allocate requested
//size block of memory.
};
是否可以通过新的 v11 规则更进一步,并使用成员函数的输出来初始化数据成员:
class file_name
{
public:
file_name(const char *input_file_name);
~file_name();
private:
char *file_name=Allocator(MAX_PATH); //data_member is initialized with a block of
//dynamic memory of sufficient size to hold
//and valid file name.;
char *Allocator(int buffer_size); //code to dynamically allocate requested
//size block of memory.
};
这会导致问题吗?
【问题讨论】:
-
你说得对 - 我把它写在脑海里,因为我倾向于通过引用传递所有变量。也许是错误的?已在 OP 中更改。
-
要通过引用传递该指针,您必须将其声明为
const char *&input_file_name,而不是原来的const char &*input_file_name。 -
嗯嗯......违反直觉。正如荷马所说。
标签: c++ memory-management initialization data-members