[SOURCE DOWNLOAD]
Indispensable Windows Native-C + +: function overloading, default parameters, inline functions, function templates
Webabcd
Introduced
Essential C + + of Windows Native
- function overloading
- Default parameters
- inline functions
- function templates
Example
1, function overloading, default parameters
CppFunction1.h
#pragma<string>usingnamespace std; namespace nativedll{ class CppFunction1 { public: string Demo (); };}
CppFunction1.cpp
/** function overloading, default parameters*/#include"pch.h"#include"CppFunction1.h"#include"CppHelper.h" using namespaceNativedll;stringCppFunction1::D emo () {//function Overloading (overload)-function overloading based on parameter type and number (cannot do function overloading by return value type only) stringFunction1_get (); stringFunction1_get (stringS1); stringFunction1_get (inti1); stringRESULT1 = Function1_get ();//Function1_get stringRESULT2 = Function1_get ("ABC");//function1_get ABC stringRESULT3 = Function1_get ( -);//Function1_get//default parameter-the function parameter allows default values, and after providing a default value for a parameter, you must provide a default value for the parameters that follow it intFunction1_sum (intXinty =1,intz =2); intA = Function1_sum ( -);//103 intb = Function1_sum ( -, -);//202 intc = Function1_sum ( -, -, -);// - return "look at the code and the comments.";}//If a function parameter has a default value and a function declaration, the default value should be specified at the function declaration (at which point the default value of the function is not valid at the function definition)intFunction1_sum (intXintYintz) {returnX + y +Z;}//The following functions are used to demonstrate function overloadingstringFunction1_get () {return "Function1_get";}/*The function overload cannot be done only by the return value type (there is a compile error for this sentence) int function1_get () {return;}*/stringFunction1_get (stringS1) { return "Function1_get"+S1;}stringFunction1_get (intI1) { return "Function1_get"+int2string (I1);}
2. Inline functions, function templates
CppFunction2.h
#pragma<string>usingnamespace std; namespace nativedll{ class CppFunction2 { public: string Demo (); };}
CppFunction2.cpp
/** Inline functions, function templates*/#include"pch.h"#include"CppFunction2.h" using namespaceNativedll;voidfunction2_demo1 ();voidFunction2_demo2 ();stringCppFunction2::D emo () {//inline (inline) functionsFunction2_demo1 (); //functions templates (function template)Function2_demo2 (); return "look at the code and the comments.";}//declares an inline function (left plus inline)InlineintFunction2_max (intIintj);//use of inline (inline) functionsvoidFunction2_demo1 () {intA =1, B =2; intx; //inline functions (built-in functions, inline functions, inline)-embed the code of the called function directly into the keynote function at compile timex = Function2_max (A, b);//2 /*The inline function is replaced directly at compile time (like a macro substitution), which calls the inline function and is replaced with the following code at compile time if (a > B) x = A; x = b; */}//define an inline function (left plus inline)//Note: From the principle of inline, it is at the expense of code bloat (copy), eliminating the overhead of function calls, thus improving the efficiency of function execution.//1. When a function contains complex control statements, such as a loop statement or a switch statement or recursion, it is not advisable to use the inline function//2, generally only small size (5 sentences below) and the use of frequent functions declared as inline//3, in short, if not worth the (performance of small, code expansion Large), it is recommended not inlineInlineintFunction2_max (intIintj) {if(I >j)returni; returnJ;}//declares a function template with two indeterminate types, T1 and T2 (no difference between TypeName and Class)Template<typename T1,classT2>//define a function using the type defined in the function template aboveT1 Function2_template (T1 A, T2 B,intC//a function that uses a function template is a template function{ if(A >b)returnA; returnA + -;}/*this notation is incorrect because the type of the return value cannot be deduced T2 function2_template (T1 A, T1 b) {if (a > B) return to [+];}*/voidFunction2_demo2 () {floatresult; floati =1.1f; intj =2; //invokes the specified function, which has an indeterminate type of argumentresult = Function2_template (i, J,0);//101.1}
Ok
[SOURCE DOWNLOAD]
Indispensable Windows Native-C + +: function overloading, default parameters, inline functions, function templates