欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
C++
小 (→C++标准) |
小 (→Libraries and code repositories) |
||
第225行: | 第225行: | ||
*[http://stlsoft.org/ STLSoft libraries]: Open-source, 100% header-only, C/C++ libraries of technology-specific facades and STL extensions. | *[http://stlsoft.org/ STLSoft libraries]: Open-source, 100% header-only, C/C++ libraries of technology-specific facades and STL extensions. | ||
− | {{ | + | {{comment}} |
− | [[ | + | [[category:c++]] |
− | [[ | + | [[category:programming language]] |
2016年2月29日 (一) 12:57的版本
C++ 是世界上最流行的系统级语言
C++语言是一种应用较广的面向对象的程序设计语言,使用它可以实现面向对象的程序设计。面向对象的设计与面向过程的设计是有很大区别的,面向对象的程序设计是在面向过程的程序设计的基础上一个质的飞跃。要学会面向对象的程序设计,首先要学会一种面向对象的语言,即要学会用VC编程,就要先有C++的基础,而学习C++语言首先要认识它面向对象的特性和实现面向对象的方法。
第一个 C++ 程序
#include <iostream> int main() { std::cout << "hello, world\n"; }
目录 |
C++标准
- 2014, ISO/IEC 14882:2014, C++14, 第四个C++标准
- 2011, ISO/IEC 14882:2011, C++11, 第三个C++标准
- 2003, ISO/IEC 14882:2003, C++03, 第二个C++标准
- 1998, ISO/IEC 14882:1998, C++98, 第一个C++标准
C++标准的运作方式:ISO标准委员会,SC22 WG21,是在ISO规则下运行的。奇怪的是,这些规则并非标准化的,而是随着时间的变化而变化。(译注:标准委员会的规则并不标准)。大多数国家都有活跃的C++团体并形成了自己的国家标准。这些团体举行会议,通过网络协调一致,并向ISO会议推选代表。加拿大,法国,德国,瑞士,英国和美国是出席这些会议较多的国家。丹麦,荷兰,日本,挪威,西班牙和别的一些国家则是出席人数比较少的国家。大多数通过网络召开的会议都是介于这两者之间,会议记录由标准委员会编号并存放在 WG21。
标准委员会每年召开两到三次会议,每次约一周的时间。这些会议的大部分工作就是工作划分,比如“核心“,”库“,”演化“,“并发”。根据需要,也会为了解决一些迫切的问题而召开会议,比如“概念”和“内存模型”。会议主要用来投票表决。首先,工作组举行民意投票来判断某个论点是否可以作为一个整体提案递交给标准委员会。然后,如果这个提案被接受,标准委员会将进行每人一票的投票表决。我们花费大量注意力在那些我们没有进入但是已经有很多人表现出来和国家不同意的形势--这将会导致长期的争论。最后,官方草案的投票由国家标准机构通过邮件完成。标准委员会和C标准组织以及POSIX有正式的联系,并和其他一些组织也有或多或少的联系。
标准委员会包括大约200个人,其中有大约60位会出席每年两到三次一周时间的会议。除此之外,在一些国家还有一些国家标准组织和会议。多数成员通过出席会议,邮件讨论或提交论文供标准委员会斟酌等方式贡献自己的力量。多数成员有朋友或同事提供帮助。第一天,标准委员会召集从各个国家而来的代表,并且每一次会议由6到12个国家的代表参加。最终投票由20个国家标准组织完成。
状态
Library
Standard C++ library headers listed below, 13 constitute the Standard Template Library, or STL.
- <algorithm> -- (STL) for defining numerous templates that implement useful algorithms
- <bitset> -- for defining a template class that administers sets of bits
- <cassert> -- for enforcing assertions when functions execute
- <cctype> -- for classifying characters
- <cerrno> -- for testing error codes reported by library functions
- <cfloat> -- for testing floating-point type properties
- <ciso646> -- for programming in ISO 646 variant character sets
- <climits> -- for testing integer type properties
- <clocale> -- for adapting to different cultural conventions
- <cmath> -- for computing common mathematical functions
- <complex> -- for defining a template class that supports complex arithmetic
- <csetjmp> -- for executing nonlocal goto statements
- <csignal> -- for controlling various exceptional conditions
- <cstdarg> -- for accessing a varying number of arguments
- <cstddef> -- for defining several useful types and macros
- <cstdio> -- for performing input and output
- <cstdlib> -- for performing a variety of operations
- <cstring> -- for manipulating several kinds of strings
- <ctime> -- for converting between various time and date formats
- <cwchar> -- for manipulating wide streams and several kinds of strings
- <cwctype> -- for classifying wide characters
- <deque> -- (STL) for defining a template class that implements a deque container
- <exception> -- for defining several functions that control exception handling
- <fstream> -- for defining several iostreams template classes that manipulate external files
- <functional> -- (STL) for defining several templates that help construct predicates for the templates defined in <algorithm> and <numeric>
- <iomanip> -- for declaring several iostreams manipulators that take an argument
- <ios> -- for defining the template class that serves as the base for many iostreams classes
- <iosfwd> -- for declaring several iostreams template classes before they are necessarily defined
- <iostream> -- for declaring the iostreams objects that manipulate the standard streams
- <istream> -- for defining the template class that performs extractions
- <iterator> -- (STL) for defining several templates that help define and manipulate iterators
- <limits> -- for testing numeric type properties
- <list> -- (STL) for defining a template class that implements a list container
- <locale> -- for defining several classes and templates that control locale-specific behavior, as in the iostreams classes
- <map> -- (STL) for defining template classes that implement associative containers
- <memory> -- (STL) for defining several templates that allocate and free storage for various container classes
- <numeric> -- (STL) for defining several templates that implement useful numeric functions
- <ostream> -- for defining the template class that performs insertions
- <queue> -- (STL) for defining a template class that implements a queue container
- <set> -- (STL) for defining template classes that implement associative containers with unique elements
- <sstream> -- for defining several iostreams template classes that manipulate string containers
- <stack> -- (STL) for defining a template class that implements a stack container
- <stdexcept> -- for defining several classes useful for reporting exceptions
- <streambuf> -- for defining template classes that buffer iostreams operations
- <string> -- for defining a template class that implements a string container
- <strstream> -- for defining several iostreams classes that manipulate in-memory character sequences
- <utility> -- (STL) for defining several templates of general utility
- <valarray> -- for defining several classes and template classes that support value-oriented arrays
- <vector> -- (STL) for defining a template class that implements a vector container
C++学习
C++语言中出现的 extern "C"语法
extern "C" { extern int getopt(int, char * const *, const char *); extern char *optarg; }
被extern "C"修饰的变量和函数是按照C语言方式编译和连接的;
这源于C++支持函数重载,而过程式语言C则不支持。而编译后的名字会有所不同,
void foo( int x, int y ); c 编译后 _foo c++ 编译后 _foo_int_int void foo( int x, float y ) c++ 编译后 _foo_int_float
编译后的类似_foo_int_int这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。
Documents
- C/C++ Reference
- C++ reference Wiki
- Complete C++ language tutorial
- Boost C++ Libraries
- GCC online documentation
- How To Think Like A Computer Scientist Learning with C++
- Data Structures and Algorithms with Object-Oriented Design Patterns in C++
文档
- C++11核心特性简析
- 从《C++ Primer 第四版》入手学习 C++
- C++ History and Rationale
- 当析构函数遇到多线程 ─ C++中线程安全的对象回调
- 谈一谈网络编程学习经验
- C++ 工程实践经验谈
相关链接
IDE
更多:Free integrated development environments
C/C++ Compilers
- GCC http://gcc.gnu.org/
- MinGW http://www.mingw.org/
- Cygwin (GNU + cygnus + Windows) http://cygwin.com/
- Visual C++ Toolkit 2003 http://msdn.microsoft.com/visualc/vctoolkit2003/
- Borland C++ Compiler 5.5 http://www.borland.com/products/downloads/download_cbuilder.html
- Borland C++BuilderX Personal 1.0 http://www.borland.com/products/downloads/download_cbuilderx.html
- Digital Mars C/C++ Compiler for Win32 http://www.digitalmars.com
- Open Watcom http://www.openwatcom.org/
- Dinkum Exam (EDG C++ front end) http://dinkumware.com/exam/dinkumExam.aspx
- Comeau C++ Online (EDG C++ front end) http://www.comeaucomputing.com/tryitout/
C/C++ News Groups
- comp.lang.c.moderated
- comp.lang.c++.moderated
- comp.std.c++
C/C++ Misc
- The C Standards Committee(ISO C) http://www.open-std.org/jtc1/sc22/wg14/
- The C++ Standard Committee(ISO C++) http://www.open-std.org/jtc1/sc22/wg21/
- ACCU (The Association of C and C++ Users) http://www.accu.org
- Incompatibilities Between ISO C and ISO C++ http://david.tribble.com/text/cdiffs.htm
- STLFilt: An STL Error Message Decryptor for C++ http://www.bdsoft.com/tools/stlfilt.html
- CppUnit http://cppunit.sourceforge.net
- The C++ Source http://www.artima.com/cppsource/
- QT http://www.trolltech.com
C++ Libraries
- Boost http://www.boost.org
- SGI STL http://www.sgi.com/tech/stl
- STLport http://www.stlport.org
- RougeWave Standard C++ Library http://www.ccd.bnl.gov/bcf/cluster/pgi/pgC++_lib/stdlib.htm
- ACE http://www.cs.wustl.edu/~schmidt/ACE.html
- FC++ http://www.cc.gatech.edu/~yannis/fc++/
- Blitz++ http://www.oonumerics.org/blitz
- Loki http://sourceforge.net/projects/loki-lib/
- MTL http://www.osl.iu.edu/research/mtl/
- POOMA http://www.pooma.com
- CGAL http://www.cgal.org/
- ROOT http://root.cern.ch/root/
图集
VC ++
VC++6.0MSDN
下载1 ISO文件 下载2 RAR 文件 下载3 RAR 文件
External links
Materials
- Dinkumware's C++ Library Reference Manual
- C/C++ Reference
- Standards Committee Page: JTC1/SC22/WG21 - C++
- CodePedia
- A Compiler-Comparison chart
Tutorials
- C++ Language Tutorial cplusplus.com
- C++ Programming Tutorial About.com
- The C++ Annotations
- Programming in C++ .
Electronic books
- Free book "C++ In Action" by Bartosz Milewski
- Free book "Thinking in C++" by Bruce Eckel
- Computer-Books.us Collection of online C++ books.
- How To Think Like A Computer Scientist: Learning with C++ by A.B. Downey
Support
- C++ FAQ Lite by Marshall Cline
- Newsgroups "comp.lang.c++" "comp.lang.c++.moderated" "comp.std.c++"
- C++ Forum at Cprogramming.com
- C and C++ at Daniweb
- C++ Forum at Dream.In.Code
Other
- http://ootips.org/
- links to C++ Tools
- Internet sites and files of interest to C++ users, A categorised list of C++ related links.
- Google C++ Style Guide
Libraries and code repositories
- Boost.org - Selection of peer-reviewed C++ libraries designed to work with the standard C++ library
- XSD: XML Data Binding for C++
- csourcesearch.net (Searchable Open Source C/C++ Code Archive)
- Portable foundation classes from GNU
- STLSoft libraries: Open-source, 100% header-only, C/C++ libraries of technology-specific facades and STL extensions.
<discussion>characters_max=300</discussion>