Download presentation
Presentation is loading. Please wait.
Published byLeon Clyde Nelson Modified over 9 years ago
1
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles C/C++ Emery Berger and Mark Corner University of Massachusetts Amherst
2
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Administrivia Using C/C++: –Windows http://www.microsoft.com/express/Downloads/ –Mac http://developer.apple.com/technologies/xcode. htmlhttp://developer.apple.com/technologies/xcode. html Edlab: elnux[1, 2, 3, 7].cs.umass.edu –Passwords = ELxxxaaa Xxx = last 3 digits of ID, aaa = first 3 chars of username 2
3
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Why C/C++? Your friends are doing it. www.tiobe.com
4
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 4 Why C? Low-level –Direct access to memory –WYSIWYG (more or less) –Effectively no runtime system No garbage collector No other threads No “read” or “write barriers” Efficient –Space & time –C: effectively portable assembly code
5
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 5 OK, Why C++? C++: extends C –Upwardly-compatible Adds significant software engineering benefits –Classes –Encapsulation (private) –Templates (“generics”) –Other modularity advantages –Inlining instead of macros
6
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 6 Outline, part I Basics – compiling & running Intrinsic types, conditionals, etc. Pointers + Reference variables –Assignment –Objects –&, *, -> Stack vs. heap
7
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 7 Outline, part II Functions –Parameter passing Structs & classes Overloading & inheritance Stack vs. heap I/O, command-line STL
8
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 8 Basics Main & compilation
9
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 9 Intrinsic Types Essentially identical
10
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 10 Conditionals Mostly the same –C/C++: nonzero int same as true
11
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 11 File I/O Simple stream-based I/O –cout << “foo”print foo –cin >> x read x from the console
12
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 12 Command-line Arguments Again, similar to Java
13
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 13 Key Differences Differences between C/C++ and Java –Assignment –Pointers –Parameter passing –Heap & Stack –Arrays
14
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 14 Assignment Java assignment: makes reference C++ assignment: makes copy
15
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 15 Pointers & Friends “Pointers are like jumps, leading wildly from one part of the data structure to another. Their introduction into high-level languages has been a step backwards from which we may never recover.” –C.A.R. Hoare
16
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 16 Pointers & Friends Concept not in Java: address manipulation
17
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 17 Functions & Parameter Passing C/C++ – all parameters copied by default
18
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 18 Parameter Passing To change input, pass pointer –or call by reference
19
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 19 Pass by Reference Syntactic sugar: foo (int &i) = pass by reference –Secretly does pointer stuff for you
20
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 20 Stack & Heap In C/C++ as in Java, objects can live on: –Stack = region of memory for temporaries Stack pointer pushed on function entry Popped on function exit –Heap = distinct region of memory for persistent objects C/C++ – explicitly managed Pointers introduce problems!
21
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 21 The Stack Stack data: new every time
22
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 22 Big Stack Mistake Never return pointers to the stack!
23
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 23 The Heap Allocate persistent data on heap with new
24
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 24 Explicit Memory Management Java heap – garbage collected C/C++ – explicit memory management –You must delete items (or memory leak) –Delete them too soon (still in use) – crash “Dangling pointer” error –Delete something twice – crash “Double-free” error
25
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 25 Classes & Objects No “top” object (as in Java Object) –Also: C++ has no interfaces but has multiple inheritance – stay far away
26
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 26 Struct Member Access struct = class with everything public –Use these sparingly
27
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 27 Class Declaration Pretty similar
28
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 28 Arrays Numerous differences –Arrays do not have to be allocated with new –Array bounds not checked –Item = pointer to start of array –Arrays just syntactic sugar for pointer arithmetic! (scary! avoid!) v = 12; *(Item + v) = 1; Same as Item[12] = 1; –Note: sizeof(x) = number of bytes to hold x Multi-dimensional arrays (matrices) –just arrays of pointers to arrays
29
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 29 Other Features Operator overloading –New meanings to existing operators int operator+(MyType& a, MyType& b); –Controversial, but useful for things like complex math, matrix operations int& operator()(int x, int y); Templates –A.k.a. generics in Java –template void foo (X arg);
30
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Standard Template Library(STL) Implements useful data structures
31
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 31 End of Lecture
32
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science 32 Classes & Objects No “top” object (as in Java Object) –Also: C++ has no interfaces but has multiple inheritance – stay far away Key difference for you – not all methods dynamically-dispatched –Methods associated with declared type rather than dynamic type unless labeled virtual
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.