最近我對學習D編程語言感興趣。 (具體來說D2,在撰寫本文時是人們所指的,因爲D原來爲了與現有代碼兼容而處於維護模式)。有沒有什麼C++可以比D做得更好,或者D不能做到? (多繼承的例子)
在決定是否使用C++或D(我已經知道C++,我對D一無所知),我想知道C++比D好嗎?如果你在線閱讀D,有很多材料只是說「這裏是一個C++代碼的例子,這裏是D代碼的一個例子 - 看起來好多了」。對於所示的例子當然是如此。
一些差異可能會受到意見。例如,從派生類中調用基類構造函數是由super()
(D)而不是<class name>(args)
在初始化列表中(在:
表示法之後)(C++)完成的。我個人不喜歡這個super
但這只是我的意見,這是不是我問的問題。
更相關的是D不能支持多重繼承。 (!)
- D NOT不支持哪些C++?
- 是否有事情的例子C爲了某些語法或邏輯原因在D中做得更好? (不主要是基於意見的,但如果它是相關的和建設性的,則可隨意以基於觀點的論點作出迴應。)
- D不支持多重繼承的事實會導致您被「鎖定」你可以用C++做些什麼? (我想也許
iostream
/ifstream
/ofstream
操作?) - 如果你真的需要它,有多種繼承禁令的方法嗎?
例如,有一件事你可能想在C++做的是類似如下:
class base
{
}
class base_has_read_operation
{
public:
void read()
{
// complicated read function, 100000 lines of code...
}
virtual void do_read() = 0;
private;
// data
}
class base_has_write_operation
{
public:
void write()
{
// complicated write function, 100000 lines of code
}
virtual void do_write() = 0;
private:
// data
}
class reader : public base_has_read_operation
{
public:
void do_read()
{
read();
}
}
class writer : public base_has_write_operation
{
public:
void do_write()
{
write();
}
}
class read_writer : public base_has_read_operation, base_has_write_operation
{
public:
void do_read()
{
read();
}
void do_write()
{
write();
}
}
但大概沒有多重繼承,你不能這樣做呢?
這很有趣,但它似乎對這個網站太開放了。 – Potatoswatter
請參閱這裏:http://programmers.stackexchange.com/questions/97207/what-does-c-do-better-than-d –
歡迎來到圖靈焦油坑,一切都是相同的,但沒有任何興趣是很容易的。你可以在C++中實現D,反之亦然:其他任何都不能做任何事情。 – Yakk