190 likes | 239 Views
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
E N D
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 it’s 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 don’t 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<integer>();
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
Memory Management • Take a deep breath, you probably won’t 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;
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/Comparison_of_Java_and_C%2B%2B