コンテンツにスキップ

C++

出典: フリー百科事典『ウィキペディア(Wikipedia)』
C++言語から転送)
C++
C++
C++のロゴ
パラダイム 手続き型プログラミングデータ抽象化オブジェクト指向プログラミングジェネリックプログラミング[1]
登場時期 1983年 (41年前) (1983)
開発者 ビャーネ・ストロヴストルップ ウィキデータを編集
最新リリース ISO/IEC 14882:2020/ 2020年12月15日 (3年前) (2020-12-15)
評価版リリース ISO/IEC 14882:2023
型付け nominative, 安全でない強い静的型付け
主な処理系 GCCClangMicrosoft Visual C++Intel C++ CompilerC++ Builder
影響を受けた言語 C言語Simula、ALGOL 68、CLUMLAda ウィキデータを編集
影響を与えた言語 JavaRustC#C++/CLID言語PHP
ウェブサイト isocpp.org ウィキデータを編集
拡張子 .C、 .cc、 .cpp、 .cxx、 .c++、 .h
テンプレートを表示

C++C[1]C使使[2][3]

C++1983AT&T1998ISOIEC200320112014201720202021ISO/IEC 14882:2020C++20

[]


C with ClassesC1979SimulaSimulaBCPL

CSimulaALGOL68AdaCLUMLCfrontC198510[4]

1983C with ClassesC++constBCPL//1985The C++ Programming LanguageC++1988)1989C++2.0constprotected1990The Annotated C++ Reference Manual (ARM)[5]C++[6]

ARM使C++1998ISO/IEC 14882:199820032011ISO/IEC 14882:2011C++11C++0x2000C++0920002011810 C++0x  C++0x  C++ C++112014ISO/IEC 14882:2014C++142017ISO/IEC 14882:2017C++172020ISO/IEC 14882:2020C++20

C++C++C printf()  scanf() I/OC++98Standard Template Library (STL) C++11

国際規格[編集]

規格出版日 C++ 国際規格 非公式名称 対応する日本工業規格
1998年9月1日 ISO/IEC 14882:1998[7] C++98
2003年10月16日 ISO/IEC 14882:2003[8] C++03 JIS X 3014:2003
2007年11月15日 ISO/IEC TR 19768:2007[9] C++TR1
2011年9月1日 ISO/IEC 14882:2011[10] C++11
2014年12月15日 ISO/IEC 14882:2014[11] C++14
2017年12月 ISO/IEC 14882:2017[12] C++17
2020年12月15日 ISO/IEC 14882:2020[13] C++20

ANSIISOC++1998 (ISO/IEC 14882:1998)19982003200312JIS X 3014:2003C++調ISO/IEC 14882:2003 (E) 

20071115C++ Technical Report 1 (TR1) C++TR1C++11

201191C++98ISO/IEC 14882:2011

2014818ISO/IEC 14882:2014 (C++14) [14]1215

2017121ISO/IEC 14882:2017 (C++17) 

202094ISO/IEC 14882:2020 (C++20) [15][16]1215ISO/IEC 14882:2020 (C++20)[17]

C++20ISO/IEC 14882:2023 (C++23) [18]2019Covid-19[19][20][21]

[]


C++Boost C++BoostC++C++BoostC++

C++11C++C++

C++[]


Rick Mascitti使198312C with ClassesC+++使CC+

The C++ Programming Language1984C++3C vocabularyC++

1992Rick Mascitti

[]


C++(1994)C++

C++C

C++

C++

C++CC

C++

C++

C++

C++Inside the C++ Object Model(Lippman, 1996)

標準ライブラリ[編集]


1998ANSI/ISO C++ 2Standard Template Library (STL) C使C/FORTRAN/Pascal/BASIC

C++C++CC++STL mapmultimapsetmultiset()C#include 使C++6919

STLSTLSTLCSTLSTL使

C++STLC++STLPortSTLC++

C++GUI



[]







STL





 - C++11

 - C++11

 - C++11

[]


C++使[?]

Boost C++

C++Boost.RegexBoost Lambda LibraryC++11C++14BoostBoost使

Apache Xerces

C++XMLJava

CppUnit

C++ 

[]


CCCC++better CCC++CC++C

C++CC++[22][23]CC++ANSI C[24]ANSIC

CANSIconstC++CC99//C++使便CC++[]

C++CC









 (RTTI)

JavaD

Hello, World![編集]

C++はC言語およびそのプリプロセッサの構文をほぼ継承している。以下のサンプルはビャーネ・ストロヴストルップの書籍「The C++ Programming Language, 4th Edition」(ISBN 978-0321563842) の「2.2.1 Hello, World!」に記載されている標準C++ライブラリのストリーム機能を用いて標準出力に出力するHello worldプログラムである[25][※ 1]

#include <iostream>

int main()
{
    std::cout << "Hello, World!\n";
}

書籍でも明記されているが、main()関数で意図的に返り値を返さない手法が使用されている。

演算子と演算子のオーバーロード[編集]


C++30[26] (..*) C++

テンプレート[編集]


C++C++14JavaC# (.NET Framework) C++Java

C++

C++


[]


C++CC++4

C++Smalltalk

[]


使C++publicprotectedprivatepublicprivateprotected

C++publicpublicC++

privateprotectedpublic[27] [28]

[]


使publicprotectedprivatepublicprotectedpublicpublicprivatevirtual

C++FlyingCatCatFlyingMammalJavaC#JavaC#C++JavaC#C++使使

多態[編集]


 () 

C++

[]






C++Curiously Recurring Template PatternC++

[]

[]



dynamic_cast (RTTI) static_caststatic_castRTTIstatic_castCstatic_castdynamic_cast
[]

virtual (virtual function) [29]C++11overrideC++使

clone()()clone()

= 0 (pure virtual function) 
[]

 (type erasure) C++std::functionstd::shared_ptr

[]


C99CC++// 

CBCPLC++C使CCBBCPLCBCPL使BCPLC使C++C++[?]

C使[?]C99

C++[]


LALR(1)C++[30]C++LALRLALR(1)C++(SPECS)GLR

C++C++C++

C++GNU GCCVisual C++使C++GLRC++

[]


C++20C++exportexportC++9852003Comeau C/C++export2004Borland C++ Builder XexportEDGexportC++"Beginning ANSI C++", Ivor HortonexportGCCHerb SutterC++export[31]C++98[32]C++11

C++OSABI[33]

2019C++gcc, Clang, Intel C++ Compiler, Microsoft Visual C++C++11C++14Clang20134C++11[34][35]C++17

C[]


C++C[36]CC++CC++C++

Cvoid*C++C++newclassC使

CC99C11//C++CC99C++[37]C99C++11C++14C99C11C99C11[38][39]

C++CCC++Cextern "C"extern "C" { ... }CCC++

C/C++CC++C++

主なC++処理系[編集]

注釈[編集]

  1. ^ Open issues for The C++ Programming Language (3rd Edition) - このコードはストロヴストルップ自身による訂正文からの引用(633ページ)。std::endl'\n'に改めている。またmain関数がデフォルトで0を返す件についてはwww.research.att.com及びwww.delorie.com/djgpp/ を参照されたし。このデフォルト仕様はmain関数のみであり他の関数にはない。

出典[編集]



(一)^ abC++4pp.12-13

(二)^ C++pp.152-153

(三)^ C++4p.11

(四)^ Bjarne Stroustrup's FAQ - When was C++ invented? (English). 2006530

(五)^ Bjarne Stroustrup; Margaret A. Ellis (1990). The Annotated C++ Reference Manual. Addison-Wesley Professional. ISBN 978-0201514599 

(六)^ Bjarne Stroustrup; Margaret A. EllisThe Annotated C++ Reference Manual2001ISBN 978-4901280396 

(七)^ ISO/IEC 14882:1998

(八)^ ISO/IEC 14882:2003

(九)^ ISO/IEC TR 19768:2007

(十)^ ISO/IEC 14882:2011

(11)^ ISO/IEC 14882:2014

(12)^ https://www.iso.org/standard/68564.html

(13)^ https://www.iso.org/standard/79358.html

(14)^ We have C++14! : Standard C++

(15)^ Current Status. isocpp.org. 202097

(16)^ C++20 Approved -- Herb Sutter. isocpp.org. 202098

(17)^ ISO/IEC 14882:2020. 2021316

(18)^ Working Draft, Standard for Programming Language C ++ (20201215). 2021316

(19)^ Sutter, Herb (2020729). Business Plan and Convener's Report: ISO/IEC JTC1/SC22/WG21 (C++). 2021316

(20)^ Upcoming Meetings, Past Meetings. 2021316

(21)^ Ranns, Nina (20201119). WG21 2020-11 Virtual Meeting: Minutes of Meeting. 2021316

(22)^ Koenig, Andrew; Bjarne Stroustrup (1989511). C++: as close as possible to C  but no closer (PDF) (). 20161119

(23)^ Stroustrup, Bjarne. Stroustrup: FAQ Is C a subset of C++? (). 20161119

(24)^ C++pp.124-125

(25)^ Bjarne Stroustrup (2000). The C++ Programming Language (Special Edition ed.). Addison-Wesley. pp. 46. ISBN 0-201-70073-5 

(26)^  - cppreference.com

(27)^ Sutter, Herb; Alexandrescu, Andrei (2004). C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Addison-Wesley 

(28)^ Henricson, Mats; Nyquist, Erik (1997). Industrial Strength C++. Prentice Hall. ISBN 0-13-120965-5 

(29)^ Stroustrup, Bjarne (2000). The C++ Programming Language (Special Edition ed.). Addison-Wesley. p. 310. ISBN 0-201-70073-5. "A virtual member function is sometimes called a method."  

(30)^ Andrew Birkett. Parsing C++ at nobugs.org.  Nobugs.org. 200973

(31)^ Why We Cant Afford Export (PDF, 266 KB) 

(32)^ Minutes of J16 Meeting No. 36/WG21 Meeting No. 31, April 7-11, 2003 (2003425). 200694

(33)^ C++ ABI. 2006530

(34)^  (2013422). LLVM ClangC++11.  . 201397

(35)^ GCC 4.8 Release Series  Changes, New Features, and Fixes - GNU Project. gcc.gnu.org. 2022117

(36)^ Bjarne Stroustrup's FAQ - Is C a subset of C++?. 2008118

(37)^ C9X -- The New C Standard. 20081227

(38)^ : §6.7.6.2

(39)^ C C99 - Build Insider

参考文献[編集]


Stroustrup, Bjarne  C++3 ,  ()︿19981997ISBN 475611895X NCID BA39336320 

Stroustrup, Bjarne  C++4SB Creative20152013ISBN 978-4-7973-7595-4 

Stroustrup, Bjarne  επιστημη C++20051994ISBN 4797328541 NCID BA70383225 

関連項目[編集]

外部リンク[編集]