C++基础--extern的用法
extern作为外部变量扩展的用法:
1. 主要作用是扩展变量或者函数的应用范围;
2. extern的用法是相对于全局变量而言;
3. 在看到extern这个关键字的时候说明这个变量已经在别的源文件中声明;
注意:变量的声明只能在源文件中(.cpp .c),但是对于extern声明的文件没有限制,可以在.h,也可以在.cpp中声明;
当然作为函数变量声明的用法也是一样的,只能作用于全局函数,也只能在源文件.cpp中声明;
一、extern作为外部变量的用法:
Func.h
#pragma once
class Func
{
public:
Func();
~Func(); void printX();
};
Func.cpp
#include "Func.h"
#include <stdio.h> int x;
Func::Func()
{
x = ;
} Func::~Func()
{
} void Func::printX()
{
printf("value of x in Func is %d", x);
}
FuncExtern.h
#pragma once extern int x;
class FuncExtern
{
public:
FuncExtern();
~FuncExtern(); void printXExtern();
};
FuncExtern.cpp
#include "FuncExtern.h"
#include <stdio.h> FuncExtern::FuncExtern()
{
} FuncExtern::~FuncExtern()
{
} void FuncExtern::printXExtern()
{
printf("value of x in FuncExtern is %d", x);
}
main.cpp
#include <stdio.h>
#include <string.h>
#include "Func.h"
#include "FuncExtern.h" int main()
{
Func *base = new Func();
base->printX();
FuncExtern *externFunc = new FuncExtern();
externFunc->printXExtern(); return 0;
}
输出结果为:

二、extern作为外部函数的用法:
Func.h
#pragma once class Func
{
public: Func();
~Func(); };
Func.cpp
#include "Func.h"
#include <stdio.h> void printX()
{
int x = 5;
printf("value of x in Func is %d\n", x);
} Func::Func()
{
} Func::~Func()
{
}
FuncExtern.h
#pragma once extern void printX();
class FuncExtern
{
public:
FuncExtern();
~FuncExtern(); void printXExtern();
};
FuncExtern.cpp
#include "FuncExtern.h"
#include <stdio.h> FuncExtern::FuncExtern()
{
} FuncExtern::~FuncExtern()
{
} void FuncExtern::printXExtern()
{
printX();
}
main.cpp
#include <stdio.h>
#include "Func.h"
#include "FuncExtern.h" int main()
{
FuncExtern *externFunc = new FuncExtern();
externFunc->printXExtern(); return 0;
}
输出结果为:

通过以上分析我认为extern唯一的用法是你能使用一个文件里全局变量而不需要include这个头文件;
C++基础--extern的用法的更多相关文章
- extern "c"用法解析
转自: extern "c"用法解析 - 简书 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟是一种面向对象的程序设计语言, ...
- 《OOC》笔记(1)——C语言const、static和extern的用法
<OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用c ...
- extern的用法
extern作为外部函数声明的用法: 1. 可以扩展函数的应用范围: 107.h #ifndef _107H_ #def _107H_ extern void func(); #endif 107.c ...
- EasyUI中Base(基础)的基本用法
EasyUI中Base(基础)的用法 一.Base(基础) 1.parser 解析器 2.easyloader 简单加载 3.draggable 拖动 4.droppable 放置 5.resizab ...
- extern "C" 用法解析
extern "c"用法解析 作者 作者Jason Ding ,链接http://www.jianshu.com/p/5d2eeeb93590 引言 C++保留了一部分过程式语言的 ...
- 变量的声明和定义以及extern的用法
变量的声明和定义以及extern的用法 变量的声明不同于变量的定义,这一点往往容易让人混淆. l 变量 ...
- 关于extern的用法
extern表示该变量或者函数时在另一个地方定义了. 在C++编程中,如果将程序分为多个文件,则需要有在文件间共享代码的方法,这时如果一个变量或者函数需要在多个文件中使用,则可以使用extern来声明 ...
- static和extern的用法小结
以前写程序是,基本不管static和extern,一个工程文件也只有一个c文件.今天尝试用多个文件来写,自然就涉及到这两个关键词的使用,自己查了些资料,并且做了些实验,总结如下. extern的用法 ...
- scrapy之基础概念与用法
scrapy之基础概念与用法 框架 所谓的框架就是一个项目的半成品.也可以说成是一个已经被集成了各种功能(高性能异步下载.队列.分布式.解析.持久化等)的具有很强通用性的项目模板. 安装 Linux: ...
随机推荐
- 忘记commit也会造成select查询的性能问题
今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据,但是耗费了几分钟的时间.让我检查分析一下原因,分析解决过后 ...
- LeetCode109. 有序链表转换二叉搜索树
109. 有序链表转换二叉搜索树 问题描述 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超 ...
- React笔记:ref注意事项
[一]使用ref必须用在[类型式的组件]才起作用,用在[函数式的组件]是无效的. 下面这个例子用在了[函数式的组件]上,所以是无效的: function MyFunctionalComponent() ...
- SPOJ - FREQ2 莫队 / n^1.5logn爆炸
题意:给定\(a[1...n]\)和\(Q\)次询问,每次统计\([L,R]\)范围内出现频率最高的数的次数 想法没啥好说的,分别统计该数出现的次数和次数出现的次数,然后莫队暴力 注意本题时间卡的很紧 ...
- WebApi接入Swagger
1.新建webApi项目 2.nuget引入 swagger 3.在项目属性里配置输出 xml文件 4.打开SwaggerConfig.cs编辑 protected static string Get ...
- PIE SDK矢量数据的查询
1.功能简介 矢量数据查询有属性查询和空间几何查询,下面对矢量数据的属性查询和空间查询做介绍 2.功能实现说明 2.1. 矢量数据的属性和空间查询 2.2. 实现思路及原理说明 第一步 得到要查询的图 ...
- oracle 错误实例分析(ORA-01126)
问题描述 SQL> shutdown immediate ORA-01109: database not open Database dismounted. ORACLE instance sh ...
- Nginx设置日志分割方法
目标:nginx cronolog日志分割配置文档,每分钟分割一次NGINX访问日志. 大体步骤如下: 1.nginx日志配置 access_log /var/log/nginx/access.log ...
- PHP中break及continue两个流程控制指令解析
<?php $arr = array( 'a' => '0a0', 'b' => '0b0', 'c' => '0c0', 'd' => '0d0', 'e' => ...
- 白话SpringCloud | 第五章:服务容错保护(Hystrix)
前言 前一章节,我们知道了如何利用RestTemplate+Ribbon和Feign的方式进行服务的调用.在微服务架构中,一个服务可能会调用很多的其他微服务应用,虽然做了多集群部署,但可能还会存在诸如 ...