Support for Embedded Programming in C++11 and C++14
|
|
|
- Toby Sherman
- 10 years ago
- Views:
Transcription
1 Support for Embedded Programming in C++11 and C++14 Scott Meyers, Ph.D. Photo: Craig flickr Copyrighted material, all rights reserved. Last Revised: 10/24/14 Features New in C++11 (Incomplete List) auto explicit conversion functions alias templates range-based for override, final move semantics scoped enums underlying type for enums static_assert smart pointers make_shared, allocate_shared variadic templates lambda expressions enhanced const_iterator support std::bind type traits numeric string conversions tuples alignment control >> as nested template closer regular expressions user-defined literals default member initializers singly-linked lists hash tables support for emplacement new algorithms perfect forwarding support for concurrency enable_if constexpr support for Unicode rvalue references raw string literals uniform (braced) initialization universal references std::array inherited & delegated constructors nullptr initializer_list std::function defaulted functions decltype trailing return types deleted functions Slide 2
2 Features New in C++14 (Incomplete List) Generalized function return type deduction Generic lambdas Lambda init capture Relaxed rules for constexpr functions Binary literals Single quote as digit separator Variable templates Global operator delete with size parameter [[deprecated]] attribute make_unique Non-member cbegin, cend, rbegin, rend, crbegin, crend Literal suffixes for string, <chrono> units, complex numbers Readers-Writer locks IO support for quoted strings Type-based tuple access Aliases for transformation traits Simplified operator functor templates Slide 3 C++11 and C++14 Features Most as useful for embedded as for non-embedded development. Covering even mentioning everything not possible. Slide 4
3 Agenda auto Enhanced enums (if time allows) Alignment control (in Bartek Szurgot s talk) constexpr Slide 5 auto Slide 6
4 Prefer auto to Explicit Type Declarations Given Widget w = expression of type Widget; auto w = expression of type Widget; why prefer auto? Slide 7 Prefer auto to Explicit Type Declarations Mandatory initialization: int sum; // possibly uninitialized auto sum; // error! no initializer from which // to deduce type auto sum = 0; // fine, sum is int initialized to 0 Slide 8
5 Prefer auto to Explicit Type Declarations Typically less verbose; avoids syntactic noise: std::vector<std::string::iterator> vsi; for (std::string::iterator si : vsi) // explicit type for (auto si : vsi) // auto template<typename It> void somealgorithm(it b, It e) { typename std::iterator_traits<it>::value_type // explicit firstelem = *b; // type auto firstelem = *b; // auto } Slide 9 Prefer auto to Explicit Type Declarations Avoids type shortcut -related problems. std::vector<int> v; unsigned sz = v.size(); // type shortcut! // (should be // std::vector<int>::size_type) Fine on 32-bit Windows. unsigned and std::vector<int>::size_type are 32 bits. Unreliable on 64-bit Windows. unsigned is 32 bits, std::vector<int>::size_type is 64 bits. auto sz = v.size(); // sz is std::vector<int>::size_type Example due to Andrey Karpov. Slide 10
6 Prefer auto to Explicit Type Declarations Avoids accidental temporary creation: std::map<std::string, int> m; // holds objects of type // std::pair<const std::string, // int> for (const std::pair<std::string, int>& p : m) // creates temp on // each iteration // std::string is copied for (const auto& p : m) // no temps created Example due to Stephan T. Lavavej. Slide 11 Prefer auto to Explicit Type Declarations Most efficient way to store function objects: std::function<int(int)> f1a = [a,b](int x) { return x*x - a/10 + b; }; // closure could // be on heap auto f1b = [a,b](int x) { return x*x - a/10 + b; }; // closure not on // heap Slide 12
7 Prefer auto to Explicit Type Declarations Efficiency difference not limited to closures: inline void f(int x, int y, int z) { } std::function<void()> f2a = // func. obj. from std::bind std::bind(f, a, b, c); // could be on heap auto f2b = std::bind(f, a, b, c); // func. obj. from std::bind // not on heap Slide 13 auto a tool, not an obligation. auto and Code Clarity If explicit type clearer, use it. But: IDEs may show types of auto-declared variables. E.g. Visual Studio Much success in other languages with similar features. Slide 14
8 auto Slide 15 constexpr Slide 16
9 Two meanings: Use constexpr Whenever Possible Objects: const + value known during compilation. Functions: return constexpr result if called with constexpr args. Truth a bit more subtle. Slide 17 constexpr Objects Must be initialized with value known during compilation: constexpr std::size_t arraysize; int sz; constexpr auto arraysize1 = sz; constexpr auto arraysize2 = 10; // error! no initializer // non-constexpr variable // error! sz's value not // known at compilation // okay Usable in contexts requiring compile-time constants: std::array<int, sz> data1; std::array<int, arraysize2> data2; const (hence unmodifiable): arraysize2 = 100; // error! sz's value still // unknown at compilation // fine, arraysize2 // is constexpr // error! Slide 18
10 constexpr Objects vs. const Objects const objects may be initialized at runtime: int sz; const auto arraysize3 = sz; // as before // fine, arraysize3 is // const copy of sz Such objects invalid in contexts requiring compile-time values: std::array<int, arraysize3> data3; // error! arraysize3 // isn't constexpr All constexpr objects are const, but not all const objects are constexpr. Slide 19 Bottom line: constexpr Objects vs. const Objects Need compile-time value constexpr is proper tool. When constexpr viable, use it. Resulting object usable in more contexts. const int maxval = 100; constexpr int maxval = 100; // typically inferior // typically superior Slide 20
11 constexpr Functions Quite different from const functions. Not limited to member functions. Execute during compilation and return constexpr results if : Arguments are constexpr. Result used in constexpr context. May (but may not) execute during compilation if: Arguments are constexpr. Result not used in constexpr context. Execute at runtime for 1 non-constexpr argument. No need to overload on constexpr. constexpr functions take constexpr and non-constexpr args. Note: constexpr functions may not return const results. constexpr functions may not execute during compilation. Slide 21 Consider an experiment where: constexpr Functions 3 possible lighting levels: high, low, off. 3 possible fan speeds: high, low, off. 3 possible temperature values: high, medium, low. Etc. n independent 3-valued conditions 3 n combinations. Holding all results in a std::array compute 3 n during compilation. Goal: calculate with constexpr function. Slide 22
12 Client view: constexpr Functions constexpr int pow(int base, int exp) noexcept // constexpr { // function... // coming soon } constexpr auto numconds = 5; std::array<int, pow(3, numconds)> results; // fine, results // has 3^numConds // elements Note: pow called with constexpr values in a constexpr context. Guarantees compile-time evaluation. Slide 23 constexpr Functions pow also callable at runtime: auto base = readfromdb("base"); auto exp = readfromdb("exponent"); auto basetoexp = pow(base, exp); // runtime call // runtime call // runtime call Slide 24
13 constexpr Functions constexpr functions are constrained. May take and return only literal types. Essentially types where values compile-time-computable. Implementations restricted. Restrictions differ for C++11 and C++14. In C++11, exactly one executable statement: return. But?: emulates if/else and recursion emulates iteration, so: constexpr int pow(int base, int exp) noexcept { return (exp == 0? 1 : base * pow(base, exp - 1)); } Slide 25 C++14 restrictions much looser. constexpr Functions Multiple statements okay Local variables of literal type okay. Iteration statements okay. Etc. Hence: constexpr int pow(int base, int exp) noexcept // C++14 { // only auto result = 1; for (int i = 0; i < exp; ++i) result *= base; return result; } Slide 26
14 Literal types can be user-defined! Literal UDTs constexpr constructors and other member functions. class Point { public: constexpr Point(double xval = 0, double yval = 0) noexcept : x(xval), y(yval) {} constexpr double xvalue() const noexcept { return x; } constexpr double yvalue() const noexcept { return y; } void setx(double newx) noexcept { x = newx; } void sety(double newy) noexcept { y = newy; } private: double x, y; }; constexpr Point p1(9.4, 27.7); // fine constexpr Point p2(28.8, 5.3); // also fine Slide 27 Given Literal UDTs constexpr Point midpoint(const Point& p1, const Point& p2) noexcept { return { (p1.xvalue() + p2.xvalue()) / 2, // call constexpr (p1.yvalue() + p2.yvalue()) / 2 }; // member funcs } a constexpr Point object could be defined as follows: constexpr auto mid = midpoint(p1, p2); // init constexpr // object w/result of // constexpr function Slide 28
15 Literal UDTs In C++14, even setters can be constexpr: class Point { public:... constexpr void setx(double newx) noexcept { x = newx; } constexpr void sety(double newy) noexcept { y = newy; }... }; // C++14 only // C++14 only Slide 29 Hence: Literal UDTs // return reflection of p with respect to the origin constexpr Point reflection(const Point& p) noexcept { Point result; // create non-const Point result.setx(-p.xvalue()); // set its x and y values result.sety(-p.yvalue()); return result; // return constexpr copy of it } constexpr Point p1(9.4, 27.7); // as before constexpr Point p2(28.8, 5.3); constexpr auto mid = midpoint(p1, p2); // as before constexpr auto reflectedmid = reflection(mid); // reflectedmid's value // is ( ) and // a compile-time // constant Slide 30
16 Pros: constexpr Pros and Cons Can shift runtime work to compile time. May help move objects from RAM to ROM. constexpr begets constexpr. constexpr objects/functions facilitate creation of more constexpr objects/functions. Con: constexpr is interface. Removing constexpr can break arbitrary amounts of code. Use constexpr only if you re willing to commit to it. Slide 31 constexpr Slide 32
17 Enhanced enums Slide 33 Prefer Scoped enums to Unscoped enums Unscoped ( old ) enums have several weaknesses: enum Color { red, green, blue }; Namespace pollution: red, green, blue in scope containing enum. enum Color { red, green, blue }; void blue(); // error! Unspecified size: sizeof(color) up to implementation. Declaration-only not allowed: definition must be given. enum Options; // error! Slide 34
18 Prefer Scoped enums to Unscoped enums Weak typing: enumerators implicitly convert to int. enum Color { red, green, blue }; Color c; double d = c; // Color int double if (c) // Color int bool enum Options { debug, optimize, log }; Options opt; if (c == opt) // compare Color and Options! Slide 35 Scoped enums Scoped enums ( enum classes ) address all these issues: enum class Color; enum class Color { red, green, blue }; void blue(); Color c; double d = c; if (c) enum class Options { debug, optimize, log }; Options opt; if (c == opt) // fine // fine // error! // error! // error! Slide 36
19 Underlying Type Default underlying type for scoped enums is int: enum class Color { red, green, blue }; Can be overridden: // in binary code, // red, green, blue // are ints enum class Color: std::uint64_t // in binary code, { red, green, blue }; // red, green, blue // are std::uint64_ts Slide 37 Underlying Type Can now be specified for unscoped enums, too: enum Options: std::uint8_t { debug, optimize, log }; Such enums may also be forward-declared: enum Options: std::uint8_t; void dowork(std::function<void()> f, Options opts); But other issues remain: Namespace pollution Weak typing // forward declaration // fine Slide 38
20 enums, std::tuple, and std::get Use of scoped enums with std::get verbose: using StackOverflowData = std::tuple<std::string, // name std::size_t, std::size_t, std::size_t, // badges std::size_t>; // reputation enum class SOIndices { name, bronzecount, silvercount, goldcount, rep }; void processsouser(const StackOverflowData& user) { auto badgecount = std::get<std::size_t(soindices::bronzecount)>(user) + std::get<std::size_t(soindices::silvercount)>(user) + std::get<std::size_t(soindices::goldcount)>(user); } Even worse with static_casts Slide 39 enums, std::tuple, and std::get Enum int conversion makes use of unscoped enums simpler: enum { // not name, bronzecount, silvercount, goldcount, rep // enum }; // class void processsouser(const StackOverflowData& user) { auto badgecount = std::get<bronzecount>(user) + std::get<silvercount>(user) + std::get<goldcount>(user); } Slide 40
21 Casting to Underlying Type Verbosity of scoped enum approach can be reduced a bit: // cast enumerator to underlying type template<typename E> constexpr typename std::underlying_type<e>::type toutype(e enumerator) { return static_cast<typename std::underlying_type<e>::type>(enumerator); } void processsouser(const StackOverflowData& user) { auto badgecount = std::get<toutype(soindices::bronzecount)>(user) + std::get<toutype(soindices::silvercount)>(user) + std::get<toutype(soindices::goldcount)>(user); } toutype also more general than having clients cast to std::size_t: Not all enum-integral conversions call for std::size_ts Scott Meyers, all rights reserved. Slide 41 Casting to Underlying Type Alias template can hide template blah_blah_blah::type syntax: template<typename E> // from previous slide constexpr typename std::underlying_type<e>::type toutype(e enumerator) { return static_cast<typename std::underlying_type<e>::type>(enumerator); } template<typename E> using UnderlyingType = typename std::underlying_type<e>::type; // alias // template template<typename E> // revised constexpr UnderlyingType<E> toutype(e enumerator) // toutype { return static_cast<underlyingtype<e>>(enumerator); } 2013 Scott Meyers, all rights reserved. Slide 42
22 Casting to Underlying Type C++14 s auto return type eliminates type repetition. Without alias template: template<typename E> constexpr auto toutype(e enumerator) // C++14 { return static_cast<typename std::underlying_type<e>::type>(enumerator); } With alias template: template<typename E> using UnderlyingType = typename std::underlying_type<e>::type; template<typename E> constexpr auto toutype(e enumerator) { return static_cast<underlyingtype<e>>(enumerator); } // C++14 Slide 43 Enhanced enums Slide 44
23 Further Information Slide 45 Further Information C++11 and C++14 in embedded systems: Embedded Programming with C++11, Rainer Grimm, Meeting C++, November Overviews prevention of narrowing conversions, static_assert, user-defined literals, constexpr, generalized PODs, std::array, move semantics, perfect forwarding, and smart pointers. C++14 Adds Embedded Features, William Wong, electronic design, 19 August Brief coverage of auto for lambda parameters and function return types, in-class aggregate initialization, user-defined literals, standard unit suffixes, constexpr, binary literals, and the digit separator. Slide 46
24 Effective use of C++11 and C++14: Effective Modern C++, Scott Meyers, O Reilly, Due out any day now... Further Information Slide 47 C++11: Further Information Programming Languages C++, Document 14882:2011, ISO/IEC, ISO product page: (CHF238 ~$245). ANSI product page: ($30). First post-standard draft (N3337): (free). Essentially identical to the standard. C++11, Wikipedia. Overview of the New C++ (C++11/14), Scott Meyers, Annotated training materials (analogous to these). The C++ Standard Library, Second Edition, Nicolai M. Josuttis, Addison-Wesley, Slide 48
25 C++14: Further Information Working Draft, Standard for Programming Language C++, Document N3797, ISO/IEC, Final freely available draft version of C++14. C++14, Wikipedia. The view from C++ Standard meeting April 2013, Michael Wong, C/C++ Cafe (blog) : Part 1, 25 April Discusses core language. Part 2, 26 April Discusses standard library. Part 3, 29 April Discusses concurrency and TSes. Overview of the New C++ (C++11/14), Scott Meyers, Annotated training materials (analogous to these). Slide 49 auto: Further Information C++11, VC++11, and Beyond, Herb Sutter, Going Native 2012, 3 February Summarizes pros and cons of using auto. In what way can C++0x standard help you eliminate 64-bit errors, Andrey Karpov, viva64.com, 28 February Source of type shortcut example. STL11: Magic && Secrets, Stephan T. Lavavej, Going Native 2012, 2 February Source of accidental temporary example. Inferring too much, Motti Lanzkron, I will not buy this blog, it is scratched!, 21 February Slide 50
26 constexpr: Further Information Constexpr Generalized Constant Expressions in C++11, Alex Allain, cprogramming.com. Using constexpr to Improve Security, Performance, and Encapsulation in C++, Danny Kalev, Software Quality Matters Blog, 19 December constexpr, Jarryd Beck, The New C++ (blog), 14 November Slide 51 Enhanced enums: Further Information Strongly typed enumerations, Wikipedia, Subsection of entry for C++11. enum class -- scoped and strongly typed enums, Bjarne Stroustrup, Subsection of C++11 the recently approved new ISO C++ standard. Closer to Perfection: Get to Know C++11 Scoped and Based Enum Types, Danny Kalev, smartbear.com, 6 February Better types in C nullptr, enum classes (strongly typed enumerations) and cstdint, Alex Allain, CPrograming.com Scott Meyers, all rights reserved. Slide 52
27 Alias templates: Further Information Handling dependent names, R. Martinho Fernandes, Flaming Dangerzone, 27 May Slide 53 Licensing Information Scott Meyers licenses materials for this and other training courses for commercial or personal use. Details: Commercial use: Licensing/licensing.html Personal use: Licensing/personalUse.html Courses currently available for personal use include: Slide 54
28 About Scott Meyers Scott offers training and consulting services on the design and implementation of C++ software systems. His web site, provides information on: Training and consulting services Books, articles, other publications Upcoming presentations Professional activities blog Slide 55
Object Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
CORBA Programming with TAOX11. The C++11 CORBA Implementation
CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy
The Evolving Search for Effective C++
The Evolving Search for Effective C++ Scott Meyers Image Florian Wizorek. Used with permission. Last Revised: 12/5/14 1991 1991 1995 1997 1999 2001 2005 2014 Polar Bear Image: Polar Bear Cub, tableatny
N3458: Simple Database Integration in C++11
N3458: Simple Database Integration in C++11 Thomas Neumann Technische Univeristät München [email protected] 2012-10-22 Many applications make use of relational database to store and query their data. However,
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
Unified Call Syntax: x.f(y) and f(x,y)
Unified Call Syntax: x.f(y) and f(x,y) Bjarne Stroustrup [[email protected]] Herb Sutter [[email protected]] Abstract In Urbana, EWG discussed two proposals for generalizing/unifying the two function call
MSP430 C/C++ CODE GENERATION TOOLS Compiler Version 3.2.X Parser Error/Warning/Remark List
MSP430 C/C++ CODE GENERATION TOOLS Compiler Version 3.2.X Parser Error/Warning/Remark List This is a list of the error/warning messages generated by the Texas Instruments C/C++ parser (which we license
Variable Base Interface
Chapter 6 Variable Base Interface 6.1 Introduction Finite element codes has been changed a lot during the evolution of the Finite Element Method, In its early times, finite element applications were developed
vector vec double # in # cl in ude <s ude tdexcept> tdexcept> // std::ou std t_of ::ou _range t_of class class V Vector { ector {
Software Design (C++) 3. Resource management and exception safety (idioms and technicalities) Juha Vihavainen University of Helsinki Preview More on error handling and exceptions checking array indices
PROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
Functional Programming in C++11
Functional Programming in C++11 science + computing ag IT-Dienstleistungen und Software für anspruchsvolle Rechnernetze Tübingen München Berlin Düsseldorf An Overview Programming in a functional style
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 28, 2010 G. Lipari (Scuola Superiore Sant Anna) Introduction
sqlpp11 - An SQL Library Worthy of Modern C++
2014-09-11 Code samples Prefer compile-time and link-time errors to runtime errors Scott Meyers, Effective C++ (2nd Edition) Code samples Let s look at some code String based In the talk, we looked at
Qt Signals and Slots. Olivier Goffart. October 2013
Qt Signals and Slots Olivier Goffart October 2013 About Me About Me QStyleSheetStyle Itemviews Animation Framework QtScript (porting to JSC and V8) QObject, moc QML Debugger Modularisation... About Me
Konzepte objektorientierter Programmierung
Konzepte objektorientierter Programmierung Prof. Dr. Peter Müller Werner Dietl Software Component Technology Exercises 3: Some More OO Languages Wintersemester 04/05 Agenda for Today 2 Homework Finish
Coding conventions and C++-style
Chapter 1 Coding conventions and C++-style This document provides an overview of the general coding conventions that are used throughout oomph-lib. Knowledge of these conventions will greatly facilitate
Binary storage of graphs and related data
EÖTVÖS LORÁND UNIVERSITY Faculty of Informatics Department of Algorithms and their Applications Binary storage of graphs and related data BSc thesis Author: Frantisek Csajka full-time student Informatics
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
To Java SE 8, and Beyond (Plan B)
11-12-13 To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader 8 9...2012 2020? Priorities for the Java Platforms Grow Developer Base Grow Adoption
The D Programming Language
The D Programming Language Andrei Alexandrescu v:addison-wesley Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris Madrid Capetown Sydney Tokyo Singapore
Applied Informatics C++ Coding Style Guide
C++ Coding Style Guide Rules and Recommendations Version 1.4 Purpose of This Document This document describes the C++ coding style employed by Applied Informatics. The document is targeted at developers
A Standardized Representation of Asynchronous Operations
Document number: Supersedes: Date: Reply-to: N3558 N3428=12-0118 2013-03-15 Niklas Gustafsson < [email protected]> Artur Laksberg < [email protected]> Herb Sutter < [email protected]>
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.
Objectif This six-day instructor-led course provides students with the knowledge and skills to develop applications in the.net 3.5 using the C# 3.0 programming language. C# is one of the most popular programming
Computer Programming I
Computer Programming I COP 2210 Syllabus Spring Semester 2012 Instructor: Greg Shaw Office: ECS 313 (Engineering and Computer Science Bldg) Office Hours: Tuesday: 2:50 4:50, 7:45 8:30 Thursday: 2:50 4:50,
Generalizing Overloading for C++2000
Generalizing Overloading for C++2000 Bjarne Stroustrup AT&T Labs, Florham Park, NJ, USA Abstract This paper outlines the proposal for generalizing the overloading rules for Standard C++ that is expected
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
Chapter 7: Functional Programming Languages
Chapter 7: Functional Programming Languages Aarne Ranta Slides for the book Implementing Programming Languages. An Introduction to Compilers and Interpreters, College Publications, 2012. Fun: a language
C++ for Safety-Critical Systems. DI Günter Obiltschnig Applied Informatics Software Engineering GmbH guenter.obiltschnig@appinf.
C++ for Safety-Critical Systems DI Günter Obiltschnig Applied Informatics Software Engineering GmbH [email protected] A life-critical system or safety-critical system is a system whose failure
For the next three questions, consider the class declaration: Member function implementations put inline to save space.
Instructions: This homework assignment focuses on basic facts regarding classes in C++. Submit your answers via the Curator System as OQ4. For the next three questions, consider the class declaration:
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
Why you shouldn't use set (and what you should use instead) Matt Austern
Why you shouldn't use set (and what you should use instead) Matt Austern Everything in the standard C++ library is there for a reason, but it isn't always obvious what that reason is. The standard isn't
C++ Support for Abstract Data Types
Topics C++ Support for Abstract Data Types Professor Department of EECS [email protected] Vanderbilt University www.cs.wustl.edu/schmidt/ (615) 343-8197 Describing Objects Using ADTs Built-in vs.
CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing
CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects
09336863931 : provid.ir
provid.ir 09336863931 : NET Architecture Core CSharp o Variable o Variable Scope o Type Inference o Namespaces o Preprocessor Directives Statements and Flow of Execution o If Statement o Switch Statement
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer
El Dorado Union High School District Educational Services
El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.
C++ Overloading, Constructors, Assignment operator
C++ Overloading, Constructors, Assignment operator 1 Overloading Before looking at the initialization of objects in C++ with constructors, we need to understand what function overloading is In C, two functions
Integrating the C++ Standard Template Library Into the Undergraduate Computer Science Curriculum
Integrating the C++ Standard Template Library Into the Undergraduate Computer Science Curriculum James P. Kelsh [email protected] Roger Y. Lee [email protected] Department of Computer Science Central
SFINAE Functionality Is Not Arcane
SFINAE Functionality Is Not Arcane Esoterica (Substitution Failure Is Not An Error FINAE) Jonathan Wakely 1 of 30 Sfin-wut? Substitution Failure Is Not An Error Term coined by David Vandevoorde for the
MPLAB Harmony System Service Libraries Help
MPLAB Harmony System Service Libraries Help MPLAB Harmony Integrated Software Framework v1.08 All rights reserved. This section provides descriptions of the System Service libraries that are available
OpenCL Static C++ Kernel Language Extension
OpenCL Static C++ Kernel Language Extension Document Revision: 04 Advanced Micro Devices Authors: Ofer Rosenberg, Benedict R. Gaster, Bixia Zheng, Irina Lipov December 15, 2011 Contents 1 Overview... 3
How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)
TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Java Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
IS0020 Program Design and Software Tools Midterm, Feb 24, 2004. Instruction
IS0020 Program Design and Software Tools Midterm, Feb 24, 2004 Name: Instruction There are two parts in this test. The first part contains 50 questions worth 80 points. The second part constitutes 20 points
Introduction to C++ Introduction to C++ Week 7 Dr Alex Martin 2013 Slide 1
Introduction to C++ Introduction to C++ Week 7 Dr Alex Martin 2013 Slide 1 Introduction to Classes Classes as user-defined types We have seen that C++ provides a fairly large set of built-in types. e.g
Object Oriented Software Design II
Object Oriented Software Design II C++ intro Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 26, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February 26,
SystemVerilog Is Getting Even Better!
by, SystemVerilog Is Getting Even Better! An Update on the Proposed 2009 SystemVerilog Standard Part 2 presented by Clifford E. Cummings Sunburst Design, Inc. [email protected] www.sunburst-design.com
PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
History OOP languages Year Language 1967 Simula-67 1983 Smalltalk
History OOP languages Intro 1 Year Language reported dates vary for some languages... design Vs delievered 1957 Fortran High level programming language 1958 Lisp 1959 Cobol 1960 Algol Structured Programming
Visual Basic. murach's TRAINING & REFERENCE
TRAINING & REFERENCE murach's Visual Basic 2008 Anne Boehm lbm Mike Murach & Associates, Inc. H 1-800-221-5528 (559) 440-9071 Fax: (559) 440-0963 [email protected] www.murach.com Contents Introduction
Getting Started with the Internet Communications Engine
Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2
16 Collection Classes
16 Collection Classes Collections are a key feature of the ROOT system. Many, if not most, of the applications you write will use collections. If you have used parameterized C++ collections or polymorphic
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
C and C++: Case Studies in Compatibility
C and C++: Case Studies in Compatibility Bjarne Stroustrup AT&T Labs Florham Park, NJ, USA ABSTRACT This article gives examples of how one might go about increasing the degree of compatibility of C and
JetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,
INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011
INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011 1 Goals of the Lecture Present an introduction to Objective-C 2.0 Coverage of the language will be INCOMPLETE
Syntax Check of Embedded SQL in C++ with Proto
Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb
C++ Crash Kurs. C++ Object-Oriented Programming
C++ Crash Kurs C++ Object-Oriented Programming Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer C++ classes A class is user-defined type
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Our program is a practical knowledge oriented program aimed at making innovative and attractive applications for mobile
Operator Overloading. Lecture 8. Operator Overloading. Running Example: Complex Numbers. Syntax. What can be overloaded. Syntax -- First Example
Operator Overloading Lecture 8 Operator Overloading C++ feature that allows implementer-defined classes to specify class-specific function for operators Benefits allows classes to provide natural semantics
Basic Programming and PC Skills: Basic Programming and PC Skills:
Texas University Interscholastic League Contest Event: Computer Science The contest challenges high school students to gain an understanding of the significance of computation as well as the details of
AppendixA1A1. Java Language Coding Guidelines. A1.1 Introduction
AppendixA1A1 Java Language Coding Guidelines A1.1 Introduction This coding style guide is a simplified version of one that has been used with good success both in industrial practice and for college courses.
C++ Front End Internal Documentation (excerpt)
C++ Front End Internal Documentation (excerpt) June 23, 2015 (Version 4.10.1) Copyright 1992-2015 Edison Design Group, Inc. 95 Cobblestone Blvd, Monroe NJ, 08831 732-993-3341 Chapter 1 External Interface
Programming and Software Development CTAG Alignments
Programming and Software Development CTAG Alignments This document contains information about four Career-Technical Articulation Numbers (CTANs) for Programming and Software Development Career-Technical
Course MS10975A Introduction to Programming. Length: 5 Days
3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
C#5.0 IN A NUTSHELL. Joseph O'REILLY. Albahari and Ben Albahari. Fifth Edition. Tokyo. Sebastopol. Beijing. Cambridge. Koln.
Koln C#5.0 IN A NUTSHELL Fifth Edition Joseph Albahari and Ben Albahari O'REILLY Beijing Cambridge Farnham Sebastopol Tokyo Table of Contents Preface xi 1. Introducing C# and the.net Framework 1 Object
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang
6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang Today s topics Why objects? Object-oriented programming (OOP) in C++ classes fields & methods objects representation
Crash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
Course Title: Software Development
Course Title: Software Development Unit: Customer Service Content Standard(s) and Depth of 1. Analyze customer software needs and system requirements to design an information technology-based project plan.
#820 Computer Programming 1A
Computer Programming I Levels: 10-12 Units of Credit: 1.0 CIP Code: 11.0201 Core Code: 35-02-00-00-030 Prerequisites: Secondary Math I, Keyboarding Proficiency, Computer Literacy requirement Semester 1
JAVA - QUICK GUIDE. Java SE is freely available from the link Download Java. So you download a version based on your operating system.
http://www.tutorialspoint.com/java/java_quick_guide.htm JAVA - QUICK GUIDE Copyright tutorialspoint.com What is Java? Java is: Object Oriented Platform independent: Simple Secure Architectural- neutral
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
VB.NET INTERVIEW QUESTIONS
VB.NET INTERVIEW QUESTIONS http://www.tutorialspoint.com/vb.net/vb.net_interview_questions.htm Copyright tutorialspoint.com Dear readers, these VB.NET Interview Questions have been designed specially to
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
C++ Language Tutorial
cplusplus.com C++ Language Tutorial Written by: Juan Soulié Last revision: June, 2007 Available online at: http://www.cplusplus.com/doc/tutorial/ The online version is constantly revised and may contain
Programming in C# with Microsoft Visual Studio 2010
Introducción a la Programación Web con C# en Visual Studio 2010 Curso: Introduction to Web development Programming in C# with Microsoft Visual Studio 2010 Introduction to Web Development with Microsoft
C++FA 3.1 OPTIMIZING C++
C++FA 3.1 OPTIMIZING C++ Ben Van Vliet Measuring Performance Performance can be measured and judged in different ways execution time, memory usage, error count, ease of use and trade offs usually have
Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
Chapter 1 Fundamentals of Java Programming
Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: [email protected] Homepage: http://www.cs.uu.nl/~ralf/
JOINT STRIKE FIGHTER. December 2005
JOINT STRIKE FIGHTER AIR VEHICLE C++ CODING STANDARDS FOR THE SYSTEM DEVELOPMENT AND DEMONSTRATION PROGRAM Document Number 2RDU00001 Rev C December 2005 Copyright 2005 by Lockheed Martin Corporation. DISTRIBUTION
Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner
1 vk» Java 7 Recipes (,\['«** - < g!p#«josh Juneau Carl Dea Freddy Guime John O'Conner Contents J Contents at a Glance About the Authors About the Technical Reviewers Acknowledgments Introduction iv xvi
SQL Server. 2012 for developers. murach's TRAINING & REFERENCE. Bryan Syverson. Mike Murach & Associates, Inc. Joel Murach
TRAINING & REFERENCE murach's SQL Server 2012 for developers Bryan Syverson Joel Murach Mike Murach & Associates, Inc. 4340 N. Knoll Ave. Fresno, CA 93722 www.murach.com [email protected] Expanded
TypeScript. Language Specification. Version 1.4
TypeScript Language Specification Version 1.4 October, 2014 Microsoft is making this Specification available under the Open Web Foundation Final Specification Agreement Version 1.0 ("OWF 1.0") as of October
Class 16: Function Parameters and Polymorphism
Class 16: Function Parameters and Polymorphism SI 413 - Programming Languages and Implementation Dr. Daniel S. Roche United States Naval Academy Fall 2011 Roche (USNA) SI413 - Class 16 Fall 2011 1 / 15
Programming in C# with Microsoft Visual Studio 2010
Course 10266A: Programming in C# with Microsoft Visual Studio 2010 Course Details Course Outline Module 1: Introducing C# and the.net Framework This module explains the.net Framework, and using C# and
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
