本人学习C++有段时间了,但是对C++还是有些部分不是很了解。因此专门找了本讲解C++的书籍,边看边总结,希望能增加对C++的理解。该书的名字是《C++面向对象程序设计》,作者李晋江,刘培强。选择该书的原因是:它是一本面向教学的书籍,里面的知识讲解都很清晰明了。本人打算先增加下对C++的理解,再去拜读下那些权威名著。
第一部分:C++语言初步
1. 命名空间
1). C++中的命名空间是用于避免类名的冲突,尤其会在大型的项目中体现出重要的作用。C++采用的是单一的全局变量命名空间。命名空间的定义:
namespace mynamespace //命名空间名字,可以自己定义,但不能与其他命名空间重名
{
int i;
classmyclass //以上是内部定义方法
{
};
void func1();
…….
}
当然也可以选择外部定义的方法,但必须要先在命名空间内部声明,例如上面的func()函数,在命名空间内只对其做了声明而没有定义。因此
void mynamespace::func1() {i++;} //选择外部定义的方式
如果要为已定义的命名空间增加成员应该怎么办呢?因为命名空间是开放的,因此命名空间可以通过多次声明和定义同一命名空间,每次添加自己的新成员和名称来实现。如:
namespace mynamespace
{
int j;
voidfunc2();
}
切记:不可对std的命名空间增加或删除任何成员。
2).如果使用命名空间?
命名空间有三种使用方法:(1)usingnamespace mynamespace; 即using namespace 加上命名空间的名字。(2)using mynamespace::member; 即using 加上命名空间的名字::成员。(3)直接在使用命名空间内的成员时加上该命名空间的名字。如我们在使用cout时可以用std::cout表示。上面三种方法在使用的时候各有优缺点,第一种方法可以减少编程人员的输入,但有可能会引起命名冲突;第三种方法需要很多的输入;第二种方法是以上两种方法的折中,但如果使用不当也可能会造成冲突。
需要注意的几点:
命名空间可以是没有名字的:如
namespace
{
members;
}