web-dev-qa-db-ja.com

最新のC ++パラダイムの概要

私は8〜10年前にC++を広範囲にわたって書いていたものです。その後、専門的な理由でC#に移行しました。しかし、時々私は次のようなステートメントを見ます

「依然としてポインタ参照を手動で追跡している場合は、それが間違っています」

または

「C++は、RAIIのような最新の概念を使用していて、回復するC開発者のように手動でメモリを割り当てていない限り、完全に安全です。」

これらはどちらも10年前の標準的な手順でした。最近、C++が大幅に改善されているのを見てきました。特にC++ 0xには、いくつかの新しい機能があるようです。 「C/old C++」プログラマーが「モダンな」C++パターンとプラクティスに追いつくための最良のリソースは何ですか?

16
GWLlosa

それは他のほとんどのものよりも教材と関係があるかもしれませんが、8-10年前、言語の使用方法は今日とはかなり異なっていたようです。今日の焦点は、テンプレート、型安全性、および一般的なプログラミングを活用することです。以前はそれ以上の恐れがなく、人々はオブジェクトの側面を持つCにほとんど専念していました。

教材も変わります。標準のC++の最初の本では、printf、scanfなどについて説明していましたが、現代的なアプローチの本では、これらをほとんど目にすることもありませんでした。

良い本のいくつかは、赤い本です。優れたC++、より優れたC++、C++テンプレートメタプログラミング、最新のC++デザイン、加速されたC++ ...

私が現在働いている場所を見ることは良い例かもしれません。私はモダンな方法でC++を使用してここに来ましたが、ほとんどの開発者は私が何をしているのか、またその理由さえ知らないようです。たとえば、演算子()を使用してオブジェクトを作成する... bind()が発生するたびに地獄にコメントする必要があり、最終的にすべてのコードを廃棄するように指示されました。イニシャライザが何をしているのかわからない...実際、私は本当に気まぐれで難しいです。

5
Edward Strange

最新の機能をすばやく適切に監視するには、/でHerb Sutterの 最近のプレゼンテーション 、「最新のC++コードの記述:C++がどのように進化してきたか」を/で見れば、間違いはありません。/build /。

彼はなぜそれがC#よりも優れた言語であるかについて語ります(もちろん-マイクロソフトはズボンを定期的に変更しており、今日彼らはC++のファッションを身に着けているため、これを宣伝します。以前)しかし、そうすることで彼はすべての優れたビット(「自動」メモリ管理やSTLクラスなど)を説明し、次にC++ 0x標準からの新しいビットについて話します。

5
gbjbaanb