OK, thanks but what happens if a function is inline? Does this put restrictions on what I can do with it? Also, if I make this function declerations and definitions in one file, is this going to be an hpp or cpp?
An inline function is not called. Instead, the definition is inserted in line. That means there is no function. That means there can be no function address. That means no virtual functions. That means no object-oriented programming using inline functions.
The compiler needs to see the function definition in oreder o insert it in line. That means the inline function definition goes in a header file.