C++ using 关键字的三种作用

使用命名空间

编程过程中有很多的类名和函数名,很容易重复,因此C++引入了命名空间供开发者使用。平时用的最多的 using namespace std 就是指在作用域中使用 STL 库(Standard Template Library)。

using namespace nsp;		// 可以使用该命名空间中的内容
							// 如果出现没有指明命名空间的函数、变量等都会去该空间中搜索,有符合的就调用
using nsp::function			// 作用域中使用 function 函数时,会自动调用该命名空间中的该函数

// 当同一个函数在使用的多个库中有命名重复时,编译器会报错,因为使用的函数是不确定的
namespace nsp1{
    void goodbye(){}
}
namespace nsp2{
    void goodbye(){}
}
using namespace nsp1;
using namespace nsp2;

int main(){

    goodbye();				//error: call of overloaded 'goodbye()' is ambiguous

    return 0;
}

子类夺取父类成员之你的就是我的 改变父类成员的访问权限

子类继承了父类后,在修饰符(public、protected、private)下使用 using + 可访问的父类成员,该成员就相当于是子类在该修饰符下中声明的。

class Base{
public:
    int _m_Base_pub;
protected:
    int _m_Base_pro;
private:
    int _m_Base_pri;		// 子类 Derive 不可对该成员使用 using,因为根本不能访问
};

class Derive : Base{		// 默认继承(private)
public:
	// 原本 _m_Base_pub 在默认继承下是私有的,不可通过 Derive 对象实例访问,但是子类在 public 修饰符下对他使用了 using,
	// 该变量就像是子类自己声明的一样,可以通过子类对象实例访问了
    using Base::_m_Base_pub;	
    int _m_Derive_pub;
protected:
	// 原本 _m_Base_pro 在默认继承下是私有的,不可派生,子类在 protected 修饰符下对他使用了 using,
	// 该变量像是子类自己声明的一样,可以向下派生了
    using Base::_m_Base_pro;
    int _m_Derive_pro;
private:
    int _m_Derive_pri;
};

class End : Derive{
    int a = _m_Base_pro;	
    int b = _m_Derive_pro;
};

// Base 对象实例可访问的有 _m_Base_pub
// Derive 对象实例可访问的有 _m_Base_pub、_m_Derive_pub
// End 对象实例没有可访问的变量!

类型别名

1、相当于 typedef,但是某种程度上来说 using 要更加直观

// 基本类型别名,两者等价
typedef int MyInt;
using MyInt = int;

//声明函数指针类型的别名,使用 using 要直观些,一眼就能看出来 func 是函数指针
typedef void (*func)(void);
using func = void (*)(void);

2、模板别名

template <typename T>;
using MyVector = std::vector<T>;

//两者等价
vector<int> v;
MyVector<int> mv;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是C++中的所有关键字及其作用: 1. `auto`: 自动型推导。 2. `break`: 终止循环或 switch 语句。 3. `case`: switch 语句中的分支。 4. `catch`: 捕获异常。 5. `char`: 字符型。 6. `class`: 定义。 7. `const`: 声明常量,或者表示函数不会修改对象。 8. `continue`: 跳过当前循环中的剩余代码。 9. `default`: switch 语句中的默认分支。 10. `delete`: 删除对象或释放动态分配的内存。 11. `do`: 循环语句,至少执行一次。 12. `double`: 双精度浮点数型。 13. `dynamic_cast`: 运行时型转换。 14. `else`: if 语句的分支。 15. `enum`: 枚举型。 16. `explicit`: 显式构造函数或型转换。 17. `export`: 指定函数或变量可在其他文件中使用。 18. `extern`: 声明变量或函数在其他文件中定义。 19. `false`: 布尔值假。 20. `float`: 单精度浮点数型。 21. `for`: 循环语句。 22. `friend`: 友元函数或。 23. `goto`: 跳转到标记的位置。 24. `if`: 条件语句。 25. `inline`: 内联函数。 26. `int`: 整数型。 27. `long`: 长整数型。 28. `mutable`: 声明成员变量可修改。 29. `namespace`: 命名空间。 30. `new`: 分配动态内存。 31. `operator`: 自定义运算符。 32. `private`: 访问控制,只能在内部访问。 33. `protected`: 访问控制,派生可访问。 34. `public`: 访问控制,任何地方都可访问。 35. `register`: 声明寄存器变量。 36. `reinterpret_cast`: 指针型转换。 37. `return`: 返回函数值。 38. `short`: 短整数型。 39. `signed`: 带符号整数型。 40. `sizeof`: 获取型或变量的大小。 41. `static`: 静态变量或函数,只在当前文件中可见。 42. `static_cast`: 静态型转换。 43. `struct`: 定义结构体。 44. `switch`: 多分支选择语句。 45. `template`: 模板或函数。 46. `this`: 指向当前对象的指针。 47. `throw`: 抛出异常。 48. `true`: 布尔值真。 49. `try`: 异常处理语句。 50. `typedef`: 定义型别名。 51. `typeid`: 获取对象型信息。 52. `typename`: 指示后面的标识符是型名。 53. `union`: 联合型。 54. `unsigned`: 无符号整数型。 55. `using`: 声明命名空间中的符号。 56. `virtual`: 虚函数。 57. `void`: 空型。 58. `volatile`: 声明变量可能被意外修改。 59. `wchar_t`: 宽字符型。 以上是C++中的所有关键字及其作用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值