Namespaces
You don't have to qualify the namespace for functions if one or more argument types are defined
in the namespace of the function. This rule is called Koenig lookup. For example://你不需要为每个函数或者参数加namespace来引用某个对象,你只需要在每个文件的开头或
.h中添加如下的Koenig lookup即可;
//defining identifiers in namespace josuttis
namespace josuttis {
class File;
void myGlobalFunc(const File&);
...
}
...
josuttis::File obj;
...
myGlobalFunc(obj); //OK, lookup finds josuttis::myGlobalFunc()
Keyword explicit
class Stack {
explicit Stack(int size); // create stack with initial size
...
};
Stack s;
...
s = 40;// OK,Oops, creates a new Stack for 40 elements and ass