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]别名和导入 前面的话 从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.例如,在 ...
随机推荐
- Educational Codeforces Round 54 ---1076ABCDE
1076A---Minimizing the String[字符串] http://codeforces.com/contest/1076/problem/A 题意: 删掉字符串中的一个字符使得得到的 ...
- HDU 4639 Hehe 2013 Multi-University Training Contest 4
题意大致如下:屌丝找女神聊天,女神回了一句 hehe ,而我们都知道 Hehe 有两个意思,一个就是 Hehe ,另外一个则是 wqnmlgb (我去年买了个表) ,所以屌丝很纠结,于是开始思考到底女 ...
- Go Example--限速
package main import ( "fmt" "time" ) func main() { requests := make(chan int, 5) ...
- Vue 1组件的使用
在components新建一个vue组件: <template> <div> <h1>{{ msg }}</h1> </div> </ ...
- Big-endian/Little-endian, LSB/MSB
Least significant byte (LSB) Most significant byte (MSB) Big-endian machines store the most-signific ...
- cookie和session机制
一.cookie和session机制之间的差别和联系 1.cookie机制 Cookie意为"甜饼",是由W3C组织提出,最早由Netscape社区发展的一种机制. 眼下Cooki ...
- RequireJS 学习资料收集
RequireJS 学习资料收集 RequireJS 模块化管理 Javascript 比较优秀. RequireJS 英文官网 https://requirejs.org/ RequireJS 中文 ...
- 20165308 2017-2018-2 《Java程序设计》第四周学习总结
20165308 2017-2018-2 <Java程序设计>第四周学习总结 知识点 第五章 1.子类声明中通常用关键字extend来定义一个子类. 2.子类和父类在同一包中的继承性,继承 ...
- 推荐一个 基于 WebSocket 和 Redis 的 即时通信 开源项目
项目地址 : https://github.com/2881099/im 大家可以和 SignalR 比较看看 , 如何 ? ^^ ^^ ^^ 这是一个 网友 写的 , 他还写了 ...
- docker 容器的使用
本文使用centos7 1 ,docker 安装: yum install docker; 2 启动 docker: service docker start; 3 开机启动docker: chkc ...