漫长的旅途--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型。

原文地址:https://www.cnblogs.com/daibigmonster/p/7517423.html