欢迎光临散文网 会员登陆 & 注册

C++基础语法梳理:友元类和友元函数以及using用法

2021-09-09 16:53 作者:C语言编程__Plus  | 我要投稿

本期是C++基础语法分享的第五节,今天给大家来分享一下:

(1)explicit(显式)关键字;

(2)friend 友元类和友元函数;

(3)using;

(4):: 范围解析运算符;

(5)enum 枚举类型;

(6)decltype;

那么我们接下来一起来看看吧!

explicit(显式)关键字

explicit 修饰构造函数时,可以防止隐式转换和复制初始化

explicit 修饰转换函数时,可以防止隐式转换,但 按语境转换 除外

explicit 使用

friend 友元类和友元函数

能访问私有成员

破坏封装性

友元关系不可传递

友元关系的单向性

友元声明的形式及数量不受限制

using

using 声明

一条 using 声明 语句一次只引入命名空间的一个成员。它使得我们可以清楚知道程序中所引用的到底是哪个名字。如:

构造函数的 using 声明

在 C++11 中,派生类能够重用其直接基类定义的构造函数。

如上 using 声明,对于基类的每个构造函数,编译器都生成一个与之对应(形参列表完全相同)的派生类构造函数。生成如下类型构造函数:

using 指示

using 指示 使得某个特定命名空间中所有名字都可见,这样我们就无需再为它们添加任何前缀限定符了。如:

尽量少使用 using 指示 污染命名空间

一般说来,使用 using 命令比使用 using 编译命令更安全,这是由于它只导入了指定的名称。如果该名称与局部名称发生冲突,编译器将发出指示。using编译命令导入所有的名称,包括可能并不需要的名称。如果与局部名称发生冲突,则局部名称将覆盖名称空间版本,而编译器并不会发出警告。另外,名称空间的开放性意味着名称空间的名称可能分散在多个地方,这使得难以准确知道添加了哪些名称。

using 使用

尽量少使用 using 指示

应该多使用 using 声明

或者

:: 范围解析运算符

分类

全局作用域符(::name):用于类型名称(类、类成员、成员函数、变量等)前,表示作用域为全局命名空间

类作用域符(class::name):用于表示指定类型的作用域范围是具体某个类的

命名空间作用域符(namespace::name):用于表示指定类型的作用域范围是具体某个命名空间的

:: 使用

enum 枚举类型

限定作用域的枚举类型

不限定作用域的枚举类型

decltype

decltype 关键字用于检查实体的声明类型或表达式的类型及值分类。语法:

decltype 使用

今天的分享就到这里了,大家要好好学C++哟~

写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

微信公众号:C语言编程学习基地

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!



C++基础语法梳理:友元类和友元函数以及using用法的评论 (共 条)

分享到微博请遵守国家法律