RValue-Reference, Move Constructor and Perfect Forwarding

Categories: cpp
Background I’ve thought I was good at C++, however, after my friend asking me about rvalue, I realized that I knew nothing about the strength of C++. In this article, I won’t introduce either rvalue or move constructor. Instead, I will describe and dig into his question and try to explain what benefits the move constructor provides. Question For std::map<Key, T, Compare, Allocator>::insert, there are two overloadings: since C++11

Read More →

C++ Virtual Table - Explained thru Assemblies

Categories: cpp
C++ Virtual Table Code C++ Sources #include <string>#include <iostream> class Base { public: virtual const char* Name() const { return "Base"; } virtual const char* BaseName() const { return "Base"; } int a = 1; int t = 2; }; class DerivedC : public Base { public: virtual const char* Name() const override { return "Derived"; } int b = 3; double c = 4.0; }; int main() { Base* base = new DerivedC; base->Name(); base->BaseName(); delete base; return 0; } Compiled Assemblies .

Read More →