当我需要using
关键字时,我真的不明白。当你想使用基类中的函数或对象时,你总是需要它吗?我发现即使我没有超载功能,我也必须使用它。
答案 0 :(得分:2)
只有两种情况需要在课堂上使用using
。首先,当您在类中定义一个与基类中的函数同名的函数时,您希望使用重载并考虑它们。另一种是当你想使用基类构造函数作为派生构造函数时。
答案 1 :(得分:2)
当您在派生类和中重载相应名称时,您只需要基类成员的using
- 指令,以使基类重载可见。如果不在detived类中重载名称,则根本不需要using
- 指令。
背景是,如果对基类的更改会劫持函数重载,则会被认为是令人惊讶的。因此,默认情况下会隐藏基类的重载。如果您希望使用它们,那么您正在进行一次彻底的改变。
让我们假设规则没有到位并考虑定义成员f(double)
的派生类,它被称为object.f(0)
。如果更改基类以提供f(int)
并且重载是可见的,则新函数将更好地匹配。也就是说,在行为无声地改变之前不可见。这可能是一个坏主意。
答案 2 :(得分:0)
如果处理命名空间,则必须使用它。例如:
using namespace std;
using std::cout;
using std::endl;
// without that you have to type it in following way
std::cout << std::endl;
// which is not the best way if you use it very often,
// but good if you want to use some names in your code
这允许您使用一些具有命名空间的库。它是为封装(隐藏)变量,类和方法创建的,否则需要更多名称空间并禁止在项目中使用某些名称。