What is the NVI mechanism of C++ programs?
This article mainly introduces the relevant knowledge of what the NVI mechanism of C++ program is, the content is detailed and easy to understand, the operation is simple and fast, and it has certain reference value. I believe you will gain something after reading this article on the NVI mechanism of C++ program. Let's take a look at it.
1. Brief introduction
We can see this phenomenon in the standard C++ library:
Six public virtual functions, all of which are std::exception::what () and their overloads.
142 non-public imaginary functions.
What is the purpose of this design, and why do you "superfluously" set the virtual function to non-public?
This is what the NVI mechanism requires: declare virtual functions as non-public and declare public functions as non-virtual-either virtual or public.
two。 Mechanism analysis
Programmers often publicize virtual functions in the base class to provide a definition of an interface (the work of virtual) as well as its implementation (a concrete implementation).
Class Base {public: virtual void Foo (int) {cout