Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Development Tools No-Code Development
Business
Entrepreneurship Communications Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certification Network & Security Hardware Operating Systems Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design Design Thinking 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition Yoga Mental Health Dieting Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Teacher Training Test Prep Other Teaching & Academics
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Cisco CCNA Amazon AWS CompTIA Security+ Microsoft AZ-900
Graphic Design Photoshop Adobe Illustrator Drawing Digital Painting InDesign Character Design Canva Figure Drawing
Life Coach Training Neuro-Linguistic Programming Personal Development Personal Transformation Mindfulness Life Purpose Meditation CBT Emotional Intelligence
Web Development JavaScript React CSS Angular PHP Node.Js WordPress Vue JS
Google Flutter Android Development iOS Development React Native Swift Dart Programming Language Mobile Development Kotlin SwiftUI
Digital Marketing Google Ads (Adwords) Social Media Marketing Google Ads (AdWords) Certification Marketing Strategy Internet Marketing YouTube Marketing Email Marketing Retargeting
Microsoft Power BI SQL Tableau Business Analysis Data Modeling Business Intelligence MySQL Data Analysis Blockchain
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Business Plan Startup Freelancing Online Business Blogging Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ 2D Game Development Unreal Engine Blueprints Blender
30-Day Money-Back Guarantee
Development Programming Languages C++

C++ in Detail: Common Idioms

Learning more about C++
Rating: 4.2 out of 54.2 (34 ratings)
7,757 students
Created by Andrii Shostatskyi
Last updated 6/2019
English
30-Day Money-Back Guarantee

What you'll learn

  • What programming idiom is
  • Most common C++ idioms
  • C++ polymorphism idioms
  • C++ resource management idioms
  • C++ optimization idioms
  • C++ type system idioms
  • C++ templates idioms

Course content

7 sections • 25 lectures • 4h 32m total length

  • Preview02:31
  • Source code link
    00:14

  • Preview17:51
  • Nullptr
    10:59
  • Type erasure: introduction
    15:15
  • Type erasure: examples from std (any, variant, function)
    14:32
  • Type erasure: implementing any
    16:18

  • Preview14:53
  • More CRTP
    07:19
  • Virtual constructor: introduction
    05:40
  • Virtual constructor: implementation
    09:30

  • PIMPL: intro
    04:08
  • PIMPL: example
    16:25
  • Fast PIMPL
    15:59

  • SFINE
    16:01
  • More SFINE
    04:09
  • Enable-if
    13:00
  • Object generator
    07:08

  • RAII: intro
    08:35
  • RAII: example (part 1)
    13:46
  • RAII: example (part 2)
    13:40
  • Reference counting
    18:33
  • Resource return
    09:19

  • SOO
    08:19
  • EBO
    08:12

Requirements

  • At least basic knowledge of C++

Description

This course is about common C++ idioms that are related to:

- types system (return type resolver, type erasure, etc.)

- polymorphism (CRTP, virtual constructor)

-  dependencies (PIMPL)

- templates (SFINE, enable-if, object generator)

- resource management (RAII, reference counting, resource return)

- optimization (SOO, EBO)

Idioms emerge from certain features of a programming language or a lack of them.  Thus, learning C++ idioms helps better understand this language.

While learning those idioms, we will touch upon many parts of C++ like template parameters, including parameter pack, overload resolution, types of polymorphism, casting, conversion operators, placement new, special member functions, friend declarations, type deduction, etc.

Who this course is for:

  • Beginner - intermediate C++ developers
  • Students (either self-taught or at university) learning C++

Instructor

Andrii Shostatskyi
Software Engineer
Andrii Shostatskyi
  • 4.3 Instructor Rating
  • 110 Reviews
  • 24,953 Students
  • 3 Courses

I am a software engineer and currently working in a 5G mobile technology project, programming in C++ on a daily basis.

My programming skills encompass mainly C++, TTCN3, Python, Django, JavaScript, Vue.js, PostgreSQL, Elasticsearch, etc.

In my free time I work on building own platform in the domain of legaltech or learn new technologies and algorithmic.

  • Udemy for Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Impressum Kontakt
  • Terms
  • Privacy policy
  • Cookie settings
  • Sitemap
  • Featured courses
Udemy
© 2021 Udemy, Inc.