タグ

C++とlanguageに関するjanus_welのブックマーク (3)

  • 本の虫: 多くのプログラマは言語を表面的な理解だけで使っている

    一般のプログラマの多くは、プログラミング言語というものを、ごく浅い表面的な理解だけで使っている。これは、いわゆる「入門書」によるところが大きい。入門書は、言語をできるだけパターンで教えようとする。かくかくしかじかの場合には、とらとらうまうまのように書いておけばいい、などといった具合だ。 たとえば、配列の全要素や、aggregateの全メンバーをゼロで初期化したいとする。多くのC++プログラマは、以下のように書く事であろう。 int a[100] = {0} ; このコードは、正しく動く。配列aの要素は、すべてゼロで初期化される。しかし、C++という言語を考えた場合、{0}と書く必要はない。空の{}で十分なのである。 int a[100] = {} ; では何故、多くのC++プログラマは{0}と書くのか。それは、多くの参考書が、そのように書いているからに過ぎない。大多数のC++プログラマは、

    janus_wel
    janus_wel 2010/09/18
    「議論する前に仕様嫁」てのは同意だけど C++ の仕様書が利用しやすいかというと個人差があるのでつまりわかりやすい説明期待してます
  • aggregateと初期化リストの不思議

    ちょうど今、initializerの項目を執筆している。この部分は、結構難しい。分かりやすく説明しようとすれば、不正確になってしまうし、規格に忠実であることを求めると、規格のように無味乾燥とした、正しいが分かりにくい文章になってしまう。 このため、なかなか執筆が進まないのだが、このままではいけないので、ともかくこのブログで、何か解説をしてみようと思う。 たまたま2chのスレで、aggregateの話題が出ているので、これについて、なかなか複雑な部分を、解説する。 C言語では、配列や構造体(C言語の用語)を初期化リストで初期化できた。 struct Foo { int x ; int y ; } ; struct Foo foo = { 1, 2 } ; 同じことは、C++でもできる。ただし、C++には「構造体」というものはない。すべて、クラスである。C++では、ある特殊な制限を満たした配列

    janus_wel
    janus_wel 2010/09/10
    わかりやすい
  • cplusplus.com - The C++ resources network

    Tutorials C++ Language: Learn this versatile and powerful programming language. Includes detailed explanations of pointers, functions, classes and templates, among others... Reference Description of the most important classes, functions and objects of the Standard Language Library, with descriptive fully-functional short programs as examples. Browse the C++ Reference Articles User-contributed arti

    janus_wel
    janus_wel 2010/02/26
    STL の reference はここがいいかも
  • 1