1
在下面的代碼,派生類對象 - 撐初始化
struct X
{
int a;
int b;
void *ptr;
};
class Base
{
public:
int a;
int b;
void *ptr;
};
class Child : public Base
{
public:
int c;
};
X obj = { 9, 2, malloc(TWOBYTES), };
Base obj1 = { 3, 4, malloc(TWOBYTES), };
Child obj2 = { 8, 4, malloc(TWOBYTES), 10, }; // Error
error: could not convert ‘{8, 4, malloc(2ul), 10}’ from ‘<brace-enclosed initializer list>’ to ‘Child’
Child obj2 = { 8, 4, malloc(TWOBYTES), 10, };
^
obj2
不會被初始化
問:
爲什麼b raced-init語法不適用於Child
類?
你以什麼順序初始化'a','b','c'&'ptr'(以及爲什麼)?無論如何,這是不允許的*,因爲C++標準是這樣說的*。 –
不要在C++中使用malloc。 – 2017-05-27 16:26:52
@ manni66'malloc()'應該在C中使用嗎?我們有C++版本的malloc()嗎? – overexchange