Prefer const_iterators to iterators (Notes)

NOTE My notes on Chapter 3, Item 13 of Effective Modern C++ written by Scott Meyers. Some (or even all) of the text can be similar to what you see in the book, as these are notes: I’ve tried not to be unnecessarily creative with my words. :) In C++, iterators come handy to point at memory addresses of STL containers. For example, // C++11 std::vector<int> x {11, 9, 23, 6}; // begin() member function returns an iterator, which points to the first // memory address of the container x std::vector<int>::iterator it = x.begin(); While the general practice is to use const whenever possible, but programmers tend to use whenever it’s practical. const_iterators is particularly suggested when you want to use iterators, but you don’t need to modify what it points to. ...

September 26, 2021 · 5 min · Kushashwa Ravi Shrimali

Declaring Overriding Functions override (Notes)

NOTE My notes on Chapter 3, Item 12 of Effective Modern C++ written by Scott Meyers. Some (or even all) of the text can be similar to what you see in the book, as these are notes: I’ve tried not to be unnecessarily creative with my words. :) Overriding != Overloading Example of virtual function overriding: // Base class class Base { public: virtual void doWork(); // ... }; // Derived class from Base class Derived: public Base { public: // virtual is optional // this will "override" Base::doWork virtual void doWork(); // ... }; // This creates a "Base" class pointer to "Derived" class object std::unique_ptr<Base> upb = std::make_unique<Derived>(); // Derived doWork() function is invoked upb->doWork(); This is how virtual function overriding allows to invoke a “derived class function” from a base class interface. ...

September 25, 2021 · 4 min · Kushashwa Ravi Shrimali

Prefer Deleted Functions to Private Undefined Ones (Notes)

Prefer deleted functions to private undefined ones This item (11) in the chapter 3 focuses on: Why and How to prevent users calling particular functions? C++-98 and C++-11 approach What’s the difference between deleting a function vs declaring a member function private (and not defining them)? NOTE These are my notes on Chapter 3, Item 11 of Effective Modern C++ written by Scott Meyers. Some (or even all) of the text can be similar to what you see in the book, as these are notes: I’ve tried not to be unnecessarily creative with my words. :) ...

August 25, 2021 · 5 min · Kushashwa Ravi Shrimali

Prefer Scoped Enums over Unscoped Enums (Notes)

Scoped vs Unscoped Enums General rule: declaring a name inside curly braces is limited to that scope. Exception: C++-98 style Enums NOTE My notes on Chapter 3, Item 10 of Effective Modern C++ written by Scott Meyers. Some (or even all) of the text can be similar to what you see in the book, as these are notes: I’ve tried not to be unnecessarily creative with my words. :) ...

August 14, 2021 · 5 min · Kushashwa Ravi Shrimali

Prefer Alias Declarations to Typedefs (Notes)

One solution to avoiding using long type names: // So C++98 like typedef std::unique_ptr<std::unordered_map<std::string, std::string>> UPtrMapSS; ...

August 12, 2021 · 3 min · Kushashwa Ravi Shrimali