Upload
george-hawkins
View
239
Download
0
Embed Size (px)
Citation preview
Kate Gregory | Gregory ConsultingJames McNellis | Senior Engineer, Visual C++
C++: A General Purpose Language and Library
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
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
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
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
• 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!
Click to edit Master subtitle style
01 | {Getting Started}
Kate Gregory | Gregory ConsultingJames McNellis | Senior Engineer, Visual C++
• Development Environment
• How to write, build, and run code
• Quick History of C++
• Variables and Types
Module Overview
Lesson 1 – Development Environment
• Development Environment
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
DEMOHello, World!
Lesson 2: How to Write, Build and Run Code• How code is built
• Structure of a C++ program
• Debugging
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.
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
DEMOBuilding
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
DEMODebugging
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
Lesson 1: Types
• C++ is strongly typed
• Fundamental types
• Casting (changing type)
DEMOTypes
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
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
DEMOCasting
©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.