You are on page 1of 18

C++ Crash Course

For CS184 Sp08


Trevor Standley
C++ Is ~(C+Java)/2
Comprises a combination of both high level
and low level language features
Developed in 1979 at Bell Labs as an
enhancement to the C programming language
Developed for backward compatibility with C
First named, C with Classes
Blazing fast, just like C. Direct access to RAM
Classes, polymorphism, exception handling,
strong typing, templates, operator overloading
etc
No memory management
Common Complaints
C++ is not a high level language.
Memory management Yuck!
I hear that its complicated, and messy.
It was designed for compatibility with an
ancient language, certainly the designers of
modern languages could have done better
without this restriction.
I dont like C, why should I like C++?
Who knows C++?
Hello World
#include <iostream>
using namespace std;
int main()
{
cout << Hello World << endl;
return 0;
}
Object vs Reference
Consider the following:
swap(int &a, int &b)
{
int t = a;
a = b;
b = t;
}
Creating an Object
C++
vector<int> vec;
vec.push_back(6);
vector<int> vec2 = vec; //deep copy
vector<int> *vec = new vector<int>();
vec->push_back(6);
vector<int> *vec2 = vec; //shallow copy
Java
Vector<integer> vec = new Vector<inte
ger>();
classes
Inheritance
Operator Overloading
Default Class Pieces
foo has a destructor
~foo(){}
a copy constructor
foo(const foo &f){x = f.x;}
an assignment operator
foo operator = (const foo &f)
{
x = f.x;
}
Possibly others
Templates
Memory Management
Take a deep breath, you probably
wont have to do any.
C++ uses the Resource
Acquisition Is Initialization
paradigm
Clean up after yourself.
Memory Management 2
Most memory is managed
automatically when an object is
initialized or goes out of scope
The only exception is when the new
operator is used.
Standard libraries manage their own
memory
If you use new, use delete
The Syntax
new returns a pointer to a location in
memory where the requested object
is
int *x = new int[5]; // returns a
pointer to memory where 5 ints are
delete [] x;
x = new vector2d(3,5)
delete x;
Memory Management Example 1
Memory Management Example 2
The Standard Template Library
C++ has multiple inheritance, which
has little meaning in practice except
that the STL is awesome!
std::vector: include <vector>
std::list: include <list>
std::string : include <string>
std::stringstream : include
<sstream>
Etc.
More Information
http://www.cplusplus.com/
http://en.wikipedia.org/wiki/C%2B%
2B
http://en.wikipedia.org/wiki/Compari
son_of_Java_and_C%2B%2B

You might also like