Inline member functions and non-inline member functions in C + + can be divided into two situations:
1. If the Declaration and definition of the member function are together, then the member function is inline, whether or not it is written inline, as follows:
Using namespace Std;class test{public:void fuc () {cout << "ok!" << Endl;}}; int main (void) {Test T, t1;t.fuc (); T1.fuc (); return 0;}
Or:
Using namespace Std;class test{public:inline void Fuc () {cout << "ok!" << Endl;}}; int main (void) {Test T, t1;t.fuc (); T1.fuc (); return 0;}
2. If the Declaration and definition of a member function are separate, then if one of the two has an inline, the member function will be inline, such as:
#include <iostream>using namespace Std;class test{public:inline void Fuc ();}; int main (void) {Test T, t1;t.fuc (); T1.fuc (); return 0;} void Test::fuc () {cout << "ok!" << Endl;}
Or:
#include <iostream>using namespace Std;class test{public:void fuc ();}; int main (void) {Test T, t1;t.fuc (); T1.fuc (); return 0;} inline void Test::fuc () {cout << "ok!" << Endl;}
To define non-inline member functions, there is only one way: declarations and definitions are not inline, as follows
#include <iostream>using namespace Std;class test{public:void fuc ();}; int main (void) {Test T, t1;t.fuc (); T1.fuc (); return 0;} void Test::fuc () {cout << "ok!" << Endl;}
--------------------------------------------------------------------------------------------------------------- ---------------
Validation is done using release version compilation at the same time as the link option is configured as follows:
You can then review the differences between compiled assembly code to verify.
Inline member functions and non-inline member functions in C + +