今早一直在回想昨晚伟杰师兄对建辉说的话。是这样的,伟杰师兄对着建辉打的一行代码using namespace std;说这样不好。我心想,我看的C++教学视屏,网上的一些C++代码,都是这样写的啊,有什么问题?于是就去一些论坛看看别人的说法。
原来分为using指令(即类似using namespace std),using声明(即类似using nsA::a)。它们都是简化对命名空间成员的访问。using指令更方便,只需一句话嘛。using声明更为安全,只导入指定的名称,如果局部名字与指定的名称重名编译器就会报错。Conversely,using指令是导入整个命名空间所有成员的名字,如果与局部名字有冲突,局部名字会覆盖空间中的成员,编辑器是不会报错的!!存在隐蔽的错误隐患。所以我可以理解伟杰的意思是:一个几十行的代码用using namespace std;一般是没问题的,毕竟涉及的变量少。但对于一个工程,存在着各种复杂的可能性,使用using namespace std;容易出错且不易发现。
接着是友元函数的概念:当一个普通函数或一个类的成员需要经常访问另一个类中的数据时,通常把被访问的类的成员函数声明为它的友元函数。嗯,大概知道是用来干嘛的,就是给个特权人家靠近自己(个人见解。。。)。于是翻了翻书,把注意的地方认真看了一遍,大概就几点要注意:
1、类必须将重载函数集中每一个希望设为友元的函数都声明为友元。
2、友元的声明以关键字friend开始,只能出现在类定义的内部。
3、友元的声明建议成组放在类定义的开始或结尾。
最后总结一下友元的作用:增加了成员函数的种类,但同时破坏了类的封装性和数据的隐蔽性,不多建议经常使用。(汗。。。今天不就白学了么。。。说笑啦,肯定有用的啦)。嗯,已经对友元有一定的了解,希望在日后的实践中进一步深入掌握。