Quote:
In my declaration of "ostream& operator <<" above as a friend, does it count as a member function or a non-member function?
It's a friend function, not a true member function, more like an enhanced non-member function.
Quote:
When and why exactly should I be inlining code?
Inline code can speed execution at the cost of larger executable so it is a trade off. And realize that even if the code is "inlined" in the function definition doesn't necessarily mean it will be "inlined" by the compiler.
Quote:
Does the compiler automatically inline code of a method defined outside the class?
No. Normally code outside the class definition is not inline by default.
Quote:
If I like being explicit about everything, which I do, should I be using "inline" in the Constructor Statements too (like so, "inline String::String ()") or does that mess up code?
No. it just obscures the code.
Quote:
What exactly qualifies as an inline method/function?
At this point I don't think you should be worrying about inline code, just get your code to compile correctly. Once you start getting into much larger code bases you may want to play with inline. And remember that just because you add the inline keyword to some function doesn't mean the compiler will inline that code. The inline code is just a hint to the compiler and some code may never be inline.
Quote:
Please suggest me other features that I should or atleast try adding other than my String class just being a wrapper for a C-style string.
Well right now your String class is not just a wrapper for a C-style string because you're just using C style char arrays. A C-string is an array of char terminated by the end of string character '\0', all C-string methods rely on this termination character for proper functioning. As far as adding other functionality I recommend you look at some documentation for std::string and try to implement most, if not all of that functionality.
Quote:
I'm thinking of adding things like reference counting and some other features I've come across using but I'll do so only when I have a basic working structure ready...
What do you think you will gain by using "reference counting"?