Presentation is loading. Please wait.

Presentation is loading. Please wait.

From C to C++. 2 Why C++ is much more fun than C (C++ FAQ)? 1.Classes & methods - OO design 2.Generic programming - Templates allow for code reuse 3.Stricter.

Similar presentations


Presentation on theme: "From C to C++. 2 Why C++ is much more fun than C (C++ FAQ)? 1.Classes & methods - OO design 2.Generic programming - Templates allow for code reuse 3.Stricter."— Presentation transcript:

1 From C to C++

2 2 Why C++ is much more fun than C (C++ FAQ)? 1.Classes & methods - OO design 2.Generic programming - Templates allow for code reuse 3.Stricter type system (e.g. function args) 4.Some run-time checks & memory control A common and mature language that gives you high level and low level control Have fun Why C++ is much more fun than C (C++ FAQ)? 1.Classes & methods - OO design 2.Generic programming - Templates allow for code reuse 3.Stricter type system (e.g. function args) 4.Some run-time checks & memory control A common and mature language that gives you high level and low level control Have fun

3 3 Why C++ is much more fun than c (C+ FQA)? 1.Tons of corner cases 2.Duplicate features 3.Cryptic syntax 4.Undecidable syntax (uncompilable progarms!) 5.No two compilers agree on it Probably one of the hardest computer languages to master. Have fun Why C++ is much more fun than c (C+ FQA)? 1.Tons of corner cases 2.Duplicate features 3.Cryptic syntax 4.Undecidable syntax (uncompilable progarms!) 5.No two compilers agree on it Probably one of the hardest computer languages to master. Have fun

4 History 4 The C++ Prog. Manual (85- 90) C++98C++03C++11 C++14 Default in g++ Minor changes auto, lambdas, threading, … Auto return type, generic lambdas, binary literals,… Minor changes Major changes

5 History 5 The C++ Prog. Manual (85- 90) C++98C++03C++11 C++14 Default in g++ Minor changes auto, lambdas, threading, … Auto return type, generic lambdas, binary literals,… Minor changes Major changes We’ll learn parts of C++-11, Mostly parts that makes C++ more “pythonic” while keeping it efficient

6 Course Objectives 6 1. Learn the language 2. Practice of programming data structures Design Testing & Debugging Efficiency & Portability Modularity

7 Course structure 7 The basic mechanism underlying many of the extensions. Overloading The C++ version. Object Oriented programing A hidden monster Copying and Conversion Templates - Generics++. Compile time polymorphism Statics, etc. Other topics

8 First Program in C++ 8 // This line includes the standard // I/O library file (similar to “copy here this file”) #include int main() { std::cout << "Hello class!\n"; return 0; }

9 Compiling & Running… 9 In this course we’ll use ubuntu standalone or c9io (ubuntu on the cloud) with the gcc (gnu compiler collection): > g++ -Wall -Wvla -Werror -g -D_GLIBCXX_DEBUG -std=c++11 –Wall hello.cpp –o hello > hello Hello class! >

10 Fill in missing types from C, in somewhat crude way 10 The missing types

11 strings in C++ 11 #include #include int main() { std::string str; int a; double b; std::cin >> str >> a >> b; if(std::cin.fail()) { std::cerr << "input problem\n"; return 1; } std::cout << "I got: "<< str << ' ' << a << ' ' << b << std::endl; } More about string functions: http://www.cppreference.com/cppstring

12 Boolean variables 12 #include int main() { int a = 5; bool isZero = (a == 0); // same conditions if(!isZero && isZero==false && isZero!=true && !!! isZero && a ) { std::cout << "a is not zero\n"; } }

13 Enum (C)

14 User Defined Type - enum Enumerated data - a set of named constants. Usage: enum [identifier]{enumerator list} enum Season { WINTER,// = 0 by default SPRING,// = WINTER + 1 SUMMER,// = WINTER + 2 AUTUMN// = WINTER + 3 }; enum {SUNDAY=1, MONDAY, TUESDAY, …}; // nameless enum Color {BLACK,RED,GREEN,YELLOW,BLUE,WHITE=7,GRAY}; // 0 1 2 3 4 7 8 enum Season { WINTER,// = 0 by default SPRING,// = WINTER + 1 SUMMER,// = WINTER + 2 AUTUMN// = WINTER + 3 }; enum {SUNDAY=1, MONDAY, TUESDAY, …}; // nameless enum Color {BLACK,RED,GREEN,YELLOW,BLUE,WHITE=7,GRAY}; // 0 1 2 3 4 7 8 14

15 enum enum Season curr_season; curr_season= AUTUMN; curr_season= 19; // legal, but ugly, g++: warning int SUMMER; // error, redefinition int prev_season = SUMMER; // legal, but ugly, g++ warning enum Season curr_season; curr_season= AUTUMN; curr_season= 19; // legal, but ugly, g++: warning int SUMMER; // error, redefinition int prev_season = SUMMER; // legal, but ugly, g++ warning 15 enum Season { WINTER,// = 0 by default SPRING,// = WINTER + 1 SUMMER,// = WINTER + 2 AUTUMN// = WINTER + 3 }; enum Season { WINTER,// = 0 by default SPRING,// = WINTER + 1 SUMMER,// = WINTER + 2 AUTUMN// = WINTER + 3 };

16 Use enum to eliminate magic numbers – alternative to #define 16

17 C++-11 enum class 17 Season curr_season; curr_season= Season::AUTUMN; curr_season= SUMMER; // won’t compile! curr_season= 19; // won’t compile! int prev_season= Season::SUMMER; // won’t compile! class char enum class Season : char { WINTER,// = 0 by default SPRING,// = WINTER + 1 SUMMER,// = WINTER + 2 AUTUMN// = WINTER + 3 };

18 enums – why? More readable code Code less error prone Accessible for debugger Use of the numerical values is not disabled bad programming usually! 18

19 Understand and remember. More than syntactic sugar. This is how a lot of stuff works under the hood (e.g. inheritance) 19 Overloading

20 #include void foo() { printf ("foo()\n"); } void foo(int n) { printf ("foo(%d)\n", n); } int main() { foo(12); foo(); return 0; } Function overloading - C 20 Compilation output: Error: Multiple definition of foo

21 Function overloading – C++ 21 #include void foo() { std::cout << "foo()\n"; } void foo(int n) { std::cout<<"foo("<<n<<")\n"; } int main() { foo(12); foo(); } Output: Compile, and print: foo(12) foo()

22 Default parameters 22 #include void foo(int n=5) { std::cout << n; } int main() { foo(); } Output: Compile, and print: foo(5)

23 Overload resolution 23


Download ppt "From C to C++. 2 Why C++ is much more fun than C (C++ FAQ)? 1.Classes & methods - OO design 2.Generic programming - Templates allow for code reuse 3.Stricter."

Similar presentations


Ads by Google