Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

24
Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++ C++: A General Purpose Language and Library

Transcript of Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Page 1: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Kate Gregory | Gregory ConsultingJames McNellis | Senior Engineer, Visual C++

C++: A General Purpose Language and Library

Page 2: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Meet Kate Gregory | @gregcons

• Consultant (mentor), author, developer

• All about community–MVP, RD, user groups, conferences– StackOverflow– Twitter, blog, Facebook…

• Over 35 years of industry experience

• Using C++ since before Microsoft had a C++ compiler

Page 3: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Meet James McNellis | @JamesMcNellis

• Senior Software Development Engineer at Microsoft– Currently a member of the Visual C++ Libraries team

• One of the top C++ contributors on StackOverflow

• Using C++ since Microsoft released Visual C++ 6.0

• Usually has absolutely no idea what he is doing

Page 4: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Course Topics

C++: A General Purpose Language and Library01 | Getting Started

05 | Pointers and RAII – Resource Acquisition is Initialization

02 | Fundamentals 06 | The C++ Standard Library, or STL

03 | The C++ Object Model 07 | Next Steps

04 | References and Inheritance

Page 5: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Setting Expectations• Target Audience– Has done some development in any other programming

language– Familiar with concepts like looping, conditional expressions– No need for any C++ background or any C-related

language

• Suggested Prerequisites/Supporting Material– Book: C++ Primer, 5th Ed., by Lippman, Lajoie, and Moo

• Software and Tools–Microsoft Visual Studio Express 2013 for Windows

Desktop– Free download

• Sample Code available– http://aka.ms/CodeCPlusPlusJS

Page 6: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

• Microsoft Virtual Academy– Free online learning tailored for IT Pros and Developers – Over 1M registered users– Up-to-date, relevant training on variety of Microsoft

products

• “Earn while you learn!” – Get 50 MVA Points for this event!– Visit http://aka.ms/MVA-Voucher – Enter this code: CPlusPlus (expires 12/20/2013)

Join the MVA Community!

Page 7: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Click to edit Master subtitle style

01 | {Getting Started}

Kate Gregory | Gregory ConsultingJames McNellis | Senior Engineer, Visual C++

Page 8: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

• Development Environment

• How to write, build, and run code

• Quick History of C++

• Variables and Types

Module Overview

Page 9: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Lesson 1 – Development Environment

• Development Environment

Page 10: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Development Environment

• Visual Studio Express 2013 for Windows Desktop– It’s free and it’s all you need to follow along

• Not using Windows?– C++ works on other platforms too– http://isocpp.org/get-started has links to compilers

• Our sample code is available– LINK TBA

Page 11: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

DEMOHello, World!

Page 12: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Lesson 2: How to Write, Build and Run Code• How code is built

• Structure of a C++ program

• Debugging

Page 13: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

The Compilation Process

Preprocessor •Takes your C++ source code and evaluates preprocessor directives.•Produces a preprocessed source file (but usually is just part of compiler).

Compiler•Takes preprocessed source code, compiles into object files.•Checks that your code conforms to all syntax and semantic rules (e.g., no type errors).•Accepts promises from the code about things defined in other source files.

Linker •Takes object files, links them into an executable program.•Ensures that all of the promises to the compiler are kept.

Page 14: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Structure of a C++ program

#include <iostream>

int main()

{

std::cout << "Hello, World!" << std::endl;

return 0;

}

Use a library

Special function name that the OS calls to run your program

std::cout represents console output<< means send the next thing to it

Page 15: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

DEMOBuilding

Page 16: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Debugging

• Normally a console application– Starts– Executes the code in main()–Might print to the console (or read from the keyboard)– Terminates (quits)

• Under a debugger, you can pause execution– Inspect values–Watch execution proceed– Slower, but vital to understanding

Page 17: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

DEMODebugging

Page 18: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Lesson 3: Quick History of C++

• Born in 1979 as C with Classes– Retains backward compatibility with C

• Named C++ in 1983

• Ratified as ISO standard in 1998

• Continues to change under stewardship of a standards committee

Page 19: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Lesson 1: Types

• C++ is strongly typed

• Fundamental types

• Casting (changing type)

Page 20: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

DEMOTypes

Page 21: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Fundamental Types

• Types you use a lot:– int, unsigned int– double– bool

• Types you may see– char, unsigned char– long, unsigned long– short, unsigned short– float

• http://msdn.microsoft.com/en-us/library/cc953fe1.aspx

Page 22: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

Casting

• Instead of writing code that relies on the compiler to convert one type to another, you can ask for it explicitly

• i = static_cast<int>(3.2);

• Makes a good “signpost” for others who read your code

• Takes away compiler warnings– Always try to build warning free

Page 23: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

DEMOCasting

Page 24: Kate Gregory | Gregory Consulting James McNellis | Senior Engineer, Visual C++

©2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.