漫长的旅途--C++primer学习-命名空间以及类的自动转换和强制转换
C++用名称空间来控制名称的作用域:
1不同命名空间的同名变量可以同时存在,不会发生冲突
2命名空间不能出现在代码块中
3我们用作用域运算符::,使用空间名来限定名称,最常用的std::cout
4using 声明和using编译指令:
using 使特定的标识符可用例如using std::cout
using 编译指令时整个命名空间可用,例如using namespace std
类的自动转换和强制转换:
我们用书中举的例子:
class Stonewt
{
private:
...
public:
Stonewt(double lbs)
Stonewt(int stn,double lbs)
...
}
正是因为有了Stonewt(double lbs)我们就可以进行如下的自动(隐式)转换
Stone a;a=19.6;
使用关键子explicit,就不能进行隐式转换(explicit Stonewt(double lbs))只能进行如下的强制转换
Stonewt a=Stonewt(19.6)
Stonewt a=(Stonewt)19.6
如果上面的19.6变成int类型的话,在创建的时候会寻找Stone(int)这样的构造函数,如果没有就其他类型的例如Stonewt(double)函数,当然int类型被转换成了double型。