PLDB
Languages Features Calendar CSV Lists Blog About Sponsor Add Language
GitHub icon

C++

C++

C++ is a pl created in 1985 by Bjarne Stroustrup.

#5on PLDB 37Years Old 4.1mUsers
128Books 6Papers 2mRepos

Try now: Riju · Replit

C++ ( pronounced cee plus plus) is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation. It was designed with a bias toward system programming and embedded, resource-constrained and large systems, with performance, efficiency and flexibility of use as its design highlights. Read more on Wikipedia...


Example from Compiler Explorer:
// Type your code here, or load an example. int square(int num) { return num * num; }
Example from Riju:
#include <iostream> int main() { std::cout << "Hello, world!" << std::endl; return 0; }
Example from hello-world:
#include <iostream> int main() { std::cout << "Hello World" << std::endl; }
Example from the Hello World Collection:
// Hello World in C++ (pre-ISO) #include <iostream.h> main() { cout << "Hello World!" << endl; return 0; }
Example from Linguist:
#include <cstdint> namespace Gui { }
Example from Wikipedia:
1 #include <iostream> 2 #include <vector> 3 #include <stdexcept> 4 5 int main() { 6 try { 7 std::vector<int> vec{3, 4, 3, 1}; 8 int i{vec.at(4)}; // Throws an exception, std::out_of_range (indexing for vec is from 0-3 not 1-4) 9 } 10 // An exception handler, catches std::out_of_range, which is thrown by vec.at(4) 11 catch (std::out_of_range &e) { 12 std::cerr << "Accessing a non-existent element: " << e.what() << '\n'; 13 } 14 // To catch any other standard library exceptions (they derive from std::exception) 15 catch (std::exception &e) { 16 std::cerr << "Exception thrown: " << e.what() << '\n'; 17 } 18 // Catch any unrecognised exceptions (i.e. those which don't derive from std::exception) 19 catch (...) { 20 std::cerr << "Some fatal error\n"; 21 } 22 }

Keywords in C++

#define #defined #elif #else #endif #error #if #ifdef #ifndef #include #line #pragma #undef alignas alignof and and_eq asm atomic_cancel atomic_commit atomic_noexcept auto bitand bitor bool break case catch char char16_t char32_t class compl concept const constexpr const_cast continue decltype default delete do double dynamic_cast else enum explicit export extern false final float for friend goto if inline int import long module mutable namespace new noexcept not not_eq nullptr operator or or_eq override private protected public register reinterpret_cast requires return short signed sizeof static static_assert static_cast struct switch synchronized template this thread_local throw transaction_safe transaction_safe_dynamic true try typedef typeid typename union unsigned using virtual void volatile wchar_t while xor xor_eq

Language features

Feature Supported Example Token
Scientific Notation
Conditionals
Access Modifiers
Switch Statements
Exceptions
Classes
While Loops
Case Sensitivity
MultiLine Comments
/* A comment
*/
/* */
Threads
Virtual function
class Animal {
 public:
  // Intentionally not virtual:
  void Move(void) {
    std::cout << "This animal moves in some way" << std::endl;
  }
  virtual void Eat(void) = 0;
};

// The class "Animal" may possess a definition for Eat if desired.
class Llama : public Animal {
 public:
  // The non virtual function Move is inherited but not overridden.
  void Eat(void) override {
    std::cout << "Llamas eat grass!" << std::endl;
  }
};
Line Comments
// A comment
//
Templates
template 
Vector& Vector::operator+=(const Vector& rhs)
{
    for (int i = 0; i < length; ++i)
        value[i] += rhs.value[i];
    return *this;
}
Print() Debugging
cout<<"hello world." << std::endl;
std::cout
References
Operator Overloading
Multiple Inheritance
Namespaces
#include 
using namespace std;

// Variable created inside namespace
namespace first
{
  int val = 500;
}
 
// Global variable
int val = 100;
// Ways to do it: https://en.cppreference.com/w/cpp/language/namespace
namespace ns_name { declarations }
inline namespace ns_name { declarations }
namespace { declarations }
ns_name::name
using namespace ns_name;
using ns_name::name;
namespace name = qualified-namespace ;
namespace ns_name::inline(since C++20)(optional) name { declarations } 
Function Overloading
// volume of a cube
int volume(const int s) {
 return s*s*s;
}
// volume of a cylinder
double volume(const double r, const int h) {
  return 3.1415926*r*r*static_cast(h);
}
Manual Memory Management
Macros
https://msdn.microsoft.com/en-us/library/503x3e3s.aspx
Iterators
std::vector items;
items.push_back(5);  // Append integer value '5' to vector 'items'.
items.push_back(2);  // Append integer value '2' to vector 'items'.
items.push_back(9);  // Append integer value '9' to vector 'items'.

for (auto it = items.begin(); it != items.end(); ++it) {  // Iterate through 'items'.
  std::cout << *it;  // And print value of 'items' for current index.
}
Directives
// #pragma once is a non-standard but widely supported preprocessor directive designed to cause the current source file to be included only once in a single compilation.
#pragma once
struct foo
{
   int member;
};
Gotos
// C/C++ program to check if a number is 
// even or not using goto statement 
#include  
using namespace std; 
  
// function to check even or not 
void checkEvenOrNot(int num) 
{ 
    if (num % 2 == 0) 
        goto even; // jump to even 
    else
        goto odd; // jump to odd 
  
even: 
    cout << num << " is evenn"; 
    return; // return if even 
odd: 
    cout << num << " is oddn"; 
} 
  
// Driver program to test above function 
int main() 
{ 
    int num = 26; 
    checkEvenOrNot(num); 
    return 0; 
}
Strings
"hello world"
"
Constants
int const one = 1;
Constructors
class Foobar {
 public:
  Foobar(double r = 1.0,
         double alpha = 0.0)  // Constructor, parameters with default values.
      : x_(r * cos(alpha))    // <- Initializer list
  {
    y_ = r * sin(alpha);  // <- Normal assignment
  }

 private:
  double x_;
  double y_;
};
Foobar a,
       b(3),
       c(5, M_PI/4);
Comments
Bitwise Operators
Single Dispatch
Merges Whitespace
Partial Application
// http://www.cplusplus.com/reference/functional/bind/
// bind example
#include      // std::cout
#include    // std::bind

// a function: (also works with function object: std::divides my_divide;)
double my_divide (double x, double y) {return x/y;}

struct MyPair {
  double a,b;
  double multiply() {return a*b;}
};

int main () {
  using namespace std::placeholders;    // adds visibility of _1, _2, _3,...

  // binding functions:
  auto fn_five = std::bind (my_divide,10,2);               // returns 10/2
  std::cout << fn_five() << '\n';                          // 5

  auto fn_half = std::bind (my_divide,_1,2);               // returns x/2
  std::cout << fn_half(10) << '\n';                        // 5

  auto fn_invert = std::bind (my_divide,_2,_1);            // returns y/x
  std::cout << fn_invert(10,2) << '\n';                    // 0.2

  auto fn_rounding = std::bind (my_divide,_1,_2);     // returns int(x/y)
  std::cout << fn_rounding(10,3) << '\n';                  // 3

  MyPair ten_two {10,2};

  // binding members:
  auto bound_member_fn = std::bind (&MyPair::multiply,_1); // returns x.multiply()
  std::cout << bound_member_fn(ten_two) << '\n';           // 20

  auto bound_member_data = std::bind (&MyPair::a,ten_two); // returns ten_two.a
  std::cout << bound_member_data() << '\n';                // 10

  return 0;
}
Unary Operators
int count = 2;
count++;
++count;
count--;
--count;
&count; // address
*count; // indirection
+count; // Positive
-count; // negative
~count; // one's complement
!x; // logical negation
sizeof count;
sizeof(int);
(float)count;
Assignment
int i = 0;
=
Integers
int i = 0;
Booleans true false
Pointers
int *p;
File Imports
#include 
Fixed Point Numbers ϴ
Garbage Collection ϴ
Magic Getters and Setters ϴ
Units of Measure ϴ
Semantic Indentation ϴ
Regular Expression Syntax Sugar ϴ

Books about C++ from ISBNdb

title authors year publisher
ADTs, Data Structures, and Problem Solving with C++ Nyhoff 2011 PEARSON INDIA
Data Structures & Algorithm Analysis in C++ Weiss, Mark 2013 Pearson
C++ Primer (5th Edition) Lippman, Stanley and Lajoie, Josée and Moo, Barbara 2012 Addison-Wesley Professional
Data Structures with C++ Using STL Ford, William and Topp, William 2001 Pearson
Introduction to Programming with C++ (Myprogramminglab) Liang, Y. Daniel 2013 Pearson
C++ How to Program (Early Objects Version) (9th Edition) Deitel, Paul and Deitel, Harvey 2013 Pearson
C++ Programming: Program Design Including Data Structures Malik, D. S. 2014 Cengage Learning
Engineering Problem Solving with C++ (3rd Edition) Etter, Delores M. and Ingber, Jeanine A. 2011 Pearson
Problem Solving With C++ Savitch, Walter 2011 Pearson
C++ How to Program: Late Objects Version (How to Program (Deitel)) Deitel, Paul and Deitel, Harvey 2010 Pearson
C++ Programming Today Johnston, Barbara 2007 Pearson
C++ for Java Programmers Weiss, Mark 2003 Pearson
C++ for Everyone Horstmann, Cay S. 2010 Wiley
Data Structures Using C and C++ (2nd Edition) Langsam, Yedidyah and Augenstein, Moshe J. and Tenenbaum, Aaron M. 1995 Pearson
Introduction to Programming with C++ Zak, Diane 2012 Cengage Learning
Data Structures And Algorithm Analysis in C++ Weiss, Mark Allen 2006 Pearson College Div
C++ Plus Data Structures Dale, Nell 2011 Jones & Bartlett Learning
Developing Series 60 Applications: A Guide for Symbian OS C++ Developers: A Guide for Symbian OS C++ Developers Edwards, Leigh and Barker, Richard and Staff of EMCC Software Ltd. 2004 Addison-Wesley Professional
The C++ Programming Language (3rd Edition) Stroustrup, Bjarne 1997 Addison-Wesley Professional
C++ Standard Library, The: A Tutorial And Reference 2Nd Edition NICOLAI M JOSUTTIS 2012 PEARSON INDIA
Starting Out with Games & Graphics in C++ Gaddis, Tony 2012 Pearson
Problem Solving with C++ Savitch, Walter 2008 Addison Wesley
Programming And Problem Solving With C++ Dale, Nell 2009 Jones & Bartlett Learning
Introduction to C++ Programming, Brief Edition D. S. Malik 2009 Course Technology
Programming: Principles and Practice Using C++ Stroustrup, Bjarne 2008 Addison-Wesley Professional
C++ Programming: From Problem Analysis to Program Design Malik, D. S. 2008 Cengage Learning
An Introduction to Computing Using C++ and Object Technology Ford, William H. and Topp, William R. 1998 Pearson
C++ Template Metaprogramming Abrahams, David 2004 Addison-Wesley Professional
C++ Programming: Program Design Including Data Structures (MindTap Course List) Malik, D. S. 2017 Cengage Learning
C++ Programs to Accompany Programming Logic and Design Smith, Jo Ann 2012 Course Technology
C++ for Everyone Horstmann, Cay S. 2011 Wiley
C++ Programming: From Problem Analysis to Program Design (Introduction to Programming) Malik, D. S. 2010 Cengage Learning
Understanding Programming: An Introduction Using C++ Cannon, Scott R. 2000 Course Technology
Absolute C++ (4th Edition) Savitch, Walter 2009 Pearson
C++ from the Ground Up: Learn C++ from the Master Schildt, Herbert 1994 Mcgraw-Hill Osborne Media
Hands-On Embedded Programming with C++17: Create versatile and robust embedded solutions for MCUs and RTOSes with modern C++ Posch, Maya 2019 Packt Publishing
C++ How to Program plus MyProgrammingLab with Pearson eText -- Access Card Package (9th Edition) Deitel, Paul and Deitel, Harvey 2013 Pearson
C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) Blanchette, Jasmin and Summerfield, Mark 2008 Prentice Hall
C++ from the Ground Up, Third Edition Schildt, Herbert 2003 McGraw-Hill Education
Object-Oriented Programming Using C++ (Introduction to Programming) Farrell, Joyce 2008 Cengage Learning
Problem Solving with C++ Plus MyLab Programming with Pearson eText -- Access Card Package Savitch, Walter 2017 Pearson
C++ How to Program (6th Edition) Deitel, Paul J. 2007 Prentice Hall
Algorithms in C++ Sedgewick, Robert 1992 Addison-Wesley Pub (Sd)
Professional C++ Solter, Nicholas A. and Kleper, Scott J. 2005 Wrox
Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and their Implementation Karniadakis, George Em 2003 Cambridge University Press
C++ GUI Programming with Qt 4 Blanchette, Jasmin and Summerfield, Mark 2006 Prentice Hall PTR
C++ Primer Lippman, Stanley B. and Lajoie, Josee and Moo, Barbara E. 2005 Addison-Wesley Professional
Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming (Unix/C) Holub, Allen I. 1995 Computing McGraw-Hill
Assembly Language and Computer Architecture Using C++ and Java™ Dos Reis, Anthony J. 2004 Course Technology
Advanced CORBA® Programming with C++ Henning, Michi and Vinoski, Steve 1999 Addison-Wesley Professional
Introduction to Programming with C++ (2nd Edition) Liang, Y. Daniel 2009 Pearson
Programming in C++ Dewhurst, Stephen 1989 Pearson Ptr
C++ Programming in easy steps McGrath, Mike 2011 In Easy Steps Limited
C++ Gotchas: Avoiding Common Problems in Coding and Design Dewhurst, Stephen C. 2002 Addison-Wesley Professional
MyLab Programming with Pearson eText -- Access Card -- for Starting Out with C++ from Control Structures to Objects (My Programming Lab) Gaddis, Tony 2017 Pearson
Object Oriented Programming In C++ Johnsonbaugh, Richard and Kalin, Martin 1994 Macmillan Coll Div
Ivor Horton's Beginning Visual C++ 2010 Horton, Ivor 2010 Wrox
C++ Programming And Fundamental Concepts Anderson Jr., Arthur E. 2008 Pearson
C++ All-In-One Desk Reference For Dummies Mueller, John Paul and Cogswell, Jeff 2009 For Dummies
Inside the C++ Object Model Lippman, Stanley B. 1996 Addison-Wesley Professional
Boost.Asio C++ Network Programming Torjo, John 2013 Packt Publishing
C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks Debbie Lafferty and Schmidt, Douglas and Huston, Stephen 2002 Addison-Wesley Professional
Essential C++ Lippman, Stanley B. 1999 Addison-Wesley Professional
Beginning C++ Game Programming Horton, John 2016 Packt Publishing
An Introduction to C++ and Numerical Methods Ortega, James M. and Grimshaw, Andrew S. 1998 Oxford University Press
Mylab Programming with Pearson Etext -- Access Card -- For Problem Solving with C++ Savitch, Walter 2014 Pearson
The Waite Group's Object-Oriented Programming in C++ Lafore, Robert and Waite Group 1998 Sams
Microsoft Visual C++ Windows Applications by Example: Code and explanation for real-world MFC C++ Applications Stefan Björnander 2008 Packt Publishing
C++ How to Program (4th Edition) Deitel, Harvey M. and Deitel, Paul J. 2002 Prentice Hall
C++ For C Programmers, Third Edition (3rd Edition) Pohl, Ira 1998 Addison-Wesley Professional
Numerical Methods in Finance with C++ (Mastering Mathematical Finance) Capinski, Maciej J. 2012 Cambridge University Press
Object-Oriented Programming in C++ Josuttis, Nicolai M. 2002 Wiley
Beginning C++ Through Game Programming, Second Edition Dawson, Michael 2006 Cengage Learning PTR
C++ Programming Ullman, Larry E. and Signer, Andreas 2005 Peachpit Pr
Advanced Metaprogramming in Classic C++ Di Gennaro, Davide 2015 Apress
C++ Primer Plus (Mitchell Waite Signature Series) Prata, Stephen 1998 Waite Group Pr
Expert C++ Programming: Leveraging the power of modern C++ to build scalable modular applications Swaminathan, Jeganathan and Posch, Maya and Galowicz, Jacek 2018 Packt Publishing
C++ The Core Language: A Foundation for C Programmers (Nutshell Handbooks) Brown, Doug and Satir, Gregory 1995 O'Reilly & Associates
Learn Microsoft Visual C++ 6.0 Now Sphar, Chuck 1999 Microsoft Press
Mylab Programming with Pearson Etext -- Access Code Card -- For Absolute C++ Savitch, Walter and Mock, Kenrick 2015 Pearson
Programming With Class: Introduction To Computer Science With C++ Kamin, Samuel N. and Reingold, Edward M. 1995 McGraw-Hill College
C++ Common Knowledge: Essential Intermediate Programming: Essential Intermediate Programming Dewhurst, Stephen 2005 Addison-Wesley Professional
C++ Standard Library Practical Tips (Programming Series) Reese, Greg 2005 Charles River Media
Sams Teach Yourself C++ in 21 Days (Sams Teach Yourself...in 21 Days) Liberty, Jesse 2001 Sams
Microsoft Mastering: MFC Development Using Microsoft Visual C++ 6.0 (DV-DLT Mastering) Microsoft Press 2000 Microsoft Press
C++ Network Programming, Volume I: Mastering Complexity with ACE and Patterns: Mastering Complexity with ACE and Patterns Schmidt, Douglas and Huston, Stephen 2001 Addison-Wesley Professional
Functional Programming in C++: How to improve your C++ programs using functional techniques Cukic, Ivan 2018 Manning Publications
Hackish C++ Games & Demos Michael Flenov 2006 A-list Publishing
Using Motif With C++ (sigs: Advances In Object Technology) Daniel J. Bernstein 1998 Sigs
C++ Program Design Davidson 2001 Irwin Professional Publishing
C++ primer Lippman, Stanley B 1989 Addison-Wesley
Programming and Problem Solving With C++ Dale, Nell B. and Weems, Chip and Headington, Mark and Dale, Nell 1996 Jones & Bartlett Pub
Object Oriented Programming With C++ OXFORD UNIVERSITY PRESS and OXFORD UNIVERSITY PRESS and OXFORD UNIVERSITY PRESS 2021 Reema Thareja
C++ Timesaving Techniques For Dummies Telles, Matthew 2005 For Dummies
Unix System Programming Using C++ Chan, Terrence 2021 Prentice Hall of India
C++ by Example (Programming Series) Perry, Greg M. 1992 Que Pub
Schaum's Outlines - Programming With C++ Hubbard, John R. and Hubbard, John R. 1996 Mcgraw-Hill
Programming for Graphics Files: In C and C++ Levine, John R. and Levine, John 1994 Wiley
Modern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Dmitrović, Slobodan 2020 Apress
C++ Plus Data Structures Dale, Nell 2003 Jones And Bartlett Publishers
C++ Windows Programming Bjornander, Stefan 2016 Packt Publishing
An Introduction to Programming With C++ (Available Titles Skills Assessment Manager (SAM) - Office 2010) Zak, Diane 2007 Course Technology
Introduction to C++ Programming and Graphics Pozrikidis, Constantine 2007 Springer
Windows Animation Programming With C++ Young, Michael J. 1994 Morgan Kaufmann Pub
Problem Solving, Abstraction & Design Using C++ (5th Edition) Friedman, Frank L. and Koffman, Elliot B. 2006 Addison Wesley
Object-Oriented Programming with C++ (Oxford Higher Education) Sahay, Sourav 2006 Oxford University Press
C++ Programming Language, The Bjarne, Stroustrup 2013 Addison-Wesley Professional
C++ Programming with Design Patterns Revealed Muldner, Tomasz 2001 Pearson
Speech Recognition: Theory and C++ Implementation Becchetti, Claudio and Ricotti, Lucio Prina 1999 Wiley
Schaum's Easy Outline: Programming with C++ Hubbard, John R. 1999 McGraw-Hill
C++ and Object Oriented Programming Irvine, Kip R. 1996 Prentice Hall
Object-Oriented Programming in C++ (2nd Edition) Johnsonbaugh, Richard and Kalin, Martin 1999 Pearson
Practical C++ Financial Programming Oliveira, Carlos 2015 Apress
Ivor Horton's Beginning Visual C++ 2012 Horton, Ivor 2012 Wrox
Financial Instrument Pricing Using C++ Duffy, Daniel J. 2004 Wiley
Sams Teach Yourself C++ in 21 Days, Third Edition Liberty, Jesse 1999 Sams
Program Development and Design Using C++ Bronson, Gary J. 2005 Course Technology
A Jump Start Course In C++ Programming James W. Cooper and Richard B. Lam 1995 Wiley-interscience
Borland C++ Power Programming/Book and Disk Walnum, Clayton 1993 Que Pub
Practical C++ McGregor, Robert W. 1999 Que Pub
C++ Gui Programming With Qt 4 Blanchette, Jasmin. Prentice Hall In Association With Trolltech Press
Starting Out With C++: Brief Version Update, Visual C++ .net (4th Edition) Tony Gaddis and Barret Krupnow 2005 Addison Wesley
Object-oriented Programming with C++ E Balagurusamy 1997 TBS
C++ Programming In Easy Steps McGrath, Mike 2008 In Easy Steps Limited
Stl Tutorial & Reference Guide: C++ Programming With the Standard Template Library (Addison-Wesley Professional Computing Series) Musser, David R. and Saini, Atul 1996 Addison-Wesley
Boost.Asio C++ Network Programming Cookbook: Over 25 hands-on recipes to create robust and highly-effi cient cross-platform distributed applications with the Boost.Asio library Radchuk, Dmytro 2016 Packt Publishing
Starting Out With The C++ (2nd Brief Edition) Tony Gaddis 2000 Scott Jones
Data Structures Through C++: Experience Data Structures C++ through animations Kanetkar, Yashavant 2019 BPB Publications

Publications about C++ from Semantic Scholar

title authors year citations influentialCitations
C++ Programming Language B. Stroustrup 1986 7014 230
TOPAS and TOPAS-Academic: an optimization program integrating computer algebra and crystallographic objects written in C++ A. Coelho 2018 627 27
Advanced C++ Programming Styles and Idioms J. Coplien 1991 468 14
Introduction to the GiNaC Framework for Symbolic Computation within the C++ Programming Language Christian Bauer and A. Frink and R. Kreckel 2000 389 39
Supporting Students in C++ Programming Courses with Automatic Program Style Assessment Kirsti Ala-Mutka and Toni Uimonen and Hannu-Matti Järvinen 2004 84 6
An Overview of the C++ Programming Language B. Stroustrup 1999 24 3
python.html · cpp.html · html.html

View source

PLDB - Build the next great programming language · v2022 · Day 33 · Docs · Build · Acknowledgements · Traffic Today · Traffic Trends · Mirrors · GitHub · feedback@pldb.com