Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: All
May 6, 1998

A Few Remarks About Inline Specifier

All member functions implemented within a class declaration are by default inline:
 
//file:  A.h

class A {
	int a;
	public:
	int Get_a() { return a; } //declaration + definition;
 						//implicitly inline
	void Set_a(int aa) { a = aa; } //ditto
	void calc(int *result); //declaration only
	//...
}
Keep in mind, however, that whenever this .h file is #included, the code of the Geta() member function, as well as any other member function defined in the declaration file, is re-compiled. As a result, not only do you end up with longer compilation time, but you also may encounter longer linking time and difficulty to step into the function code during a debugging session. Therefore, it is best to implement all member functions in their corresponding .cpp file and leave only function prototypes in the .h file like this:
 
//file:  A.h

class A {
	int a;
	public:
	inline int Get_a(); //implemented in a separate .cpp file 
	inline void Set_a(int aa);  
	void calc(int *result); 
	//...
}

//file: A.cpp

#include "A.h"

int A::Get_a() 
{
	return a;
}

//etc..
By the way, even when defining these member functions separately, the inline specifier is most likely redundant, since any decent optimizer is clever enough to figure out automatically when a member function should be inlined. In other words, inline is almost never required.
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap