C++进阶--命名空间和关键字using
//############################################################################
/*
* C++关键字:using
*
* 1. using指示: 将命名空间所以成员引入当前作用域
* 例子:
*/
using namespace std;
/* 2. using声明
* a. 将一个特定命名空间成员引入当前作用域
* b. 将一个成员从基类引入当前类的作用域
* 例子:
*/
using std::cout;
cout << "Hello world.\n";
using namespace std; // case 1, global scope
using std::cout; // case 2.a, gloabal scope
class B {
public:
void f(int a);
};
class D : private B {
public:
void g() {
using namespace std; // case 1, local scope
cout << "From D: \n";
}
void h() {
using std::cout; // case 2.a, local scope
cout << "From D: \n";
}
using B::f; // case 2.b, class scope
};
D d;
d.f(8);
/* Notes:
* 1. using声明和using指示用于命名空间时,可以在全局或者局部作用域
* 2. using声明当用于类成员时,可以用于类作用域。下面是一个使用例子
*/
class B {
public:
void f(int a);
};
class D : public B {
public:
using B::f;
void f(); //先从最近的派生类搜索,命中之后就停止搜索,再检查参数是否匹配
};
int main() {
D d;
d.f(8); //编译错误,可通过加using B::f修复;
}
/*
* 匿名的命名空间
*/
static void h() { std::cout << "h()\n"; }
void g() { std::cout << "global g()\n"; }
namespace {
void g() { std::cout << "g()\n"; } //匿名命名空间中的所有东西,都可以在本文件中被访问
void h() { std::cout << "h()\n"; g(); } //调用本地的g()
}
int main() {
h();
}
C++进阶--命名空间和关键字using的更多相关文章
- Python进阶 - 命名空间与作用域
Python进阶 - 命名空间与作用域 写在前面 如非特别说明,下文均基于Python3 命名空间与作用于跟名字的绑定相关性很大,可以结合另一篇介绍Python名字.对象及其绑定的文章. 1. 命名空 ...
- Java进阶1. Synchronized 关键字
Java进阶1. Synchronized 关键字 20131025 1.关于synchronized的简介: Synchronized 关键字代表对这个方法加锁,相当于不管那一个线程,运行到这个方法 ...
- C++进阶--模板及关键字typename
//############################################################################ /* * 模板介绍 */ //函数模板 t ...
- 进阶Kotlin-常见关键字
常见Kotlin 的关键字 一些常见的语法,我没有写注释. 前面基础的kotlin语法已经弄完了. 现在是高阶kotlin的语法啊. 包括,面向对象,lambad等. 其中面向对象的三大特点:封装 ...
- SQLite进阶-13.Autoincrement关键字
目录 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增.我们可以在创建表时在特定的列名称上使用 AUTOINCREMENT 关键字实现该字段值的自动增加. 关键字 AUTOINCRE ...
- SQLite进阶-12.Distinct关键字
目录 DISTINCT关键字 DISTINCT关键字 DISTINCT关键字与SELECT语句一起使用,用来消除重复数据,获得唯一数据. -- 语句 SELECT DISTINCT column1, ...
- day3之函数的初始及进阶
函数初始 函数的定义与调用 ''' def 函数名 (参数): 函数体 函数名:设定与变量相同 执行函数: 函数名() ''' 函数的返回值 # 函数返回值 return ''' 1.遇到return ...
- PHP 面向对象编程和设计模式 (5/5) - PHP 命名空间的使用及名称解析规则
PHP高级程序设计 学习笔记 2014.06.12 命名空间概述 PHP 在 5.3.0 以后的版本开始支持命名空间.什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这 ...
- 前端学PHP之命名空间
× 目录 [1]定义 [2]多命名空间 [3]名称解析[4]访问内部元素[5]全局空间[6]别名和导入 前面的话 从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.例如,在 ...
随机推荐
- [LeetCode&Python] Problem 860. Lemonade Change
At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and ...
- Oracle使用笔记(一)
目录 一.创建表: 二.编辑表数据: 三.Oracle基本数据类型: (一) 字符串类型 1.1:CHAR类型 CHAR(size [BYTE | CHAR]) 1.2: NCHAR类型 1.3 VA ...
- Prism for WPF
Prism for WPF Prism for WPF初探(构建简单的模块化开发框架) 先简单的介绍一下Prism框架,引用微软官方的解释: Prism provides guidance to ...
- Django模型层之多表操作
----------------https://www.cnblogs.com/liuqingzheng/articles/9499252.html 实例:我们来假定下面这些概念,字段和关系 一 创建 ...
- acm 2084
////////////////////////////////////////////////////////////////////////////////#include<iostream ...
- oracle ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)
字符集子集向其超集转换是可行的,如此例 ZHS16GBK转换为AL32UTF8. 导出使用的字符集将会记录在导出文件中,当文件导入时,将会检查导出时使用的字符集设置,如果这个字符集不同于导入客户端的N ...
- CTEX(LaTeX) 编译 中文
CTEX 中文编码&编译问题 #win10 tex 文档为 GBK 编码 https://zhidao.baidu.com/question/93645685.html \documentcl ...
- Chrome (开发者工具)快捷键
https://9iphp.com/web/javascript/chrome-devtools-shortcuts.html https://www.cnblogs.com/davidwang456 ...
- 【BZOJ4817】【SDOI2017】树点染色
不算学会lct...... 原题: Bob有一棵n个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义一条路 径的权值是:这条路径上的点(包括起点和终点)共有多少种 ...
- scala学习笔记-面向对象编程之Trait
将trait作为接口使用 1 // Scala中的Triat是一种特殊的概念 2 // 首先我们可以将Trait作为接口来使用,此时的Triat就与Java中的接口非常类似 3 // 在triat中可 ...