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的用法的更多相关文章

  1. extern "c"用法解析

    转自: extern "c"用法解析 - 简书 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟是一种面向对象的程序设计语言, ...

  2. 《OOC》笔记(1)——C语言const、static和extern的用法

    <OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用c ...

  3. extern的用法

    extern作为外部函数声明的用法: 1. 可以扩展函数的应用范围: 107.h #ifndef _107H_ #def _107H_ extern void func(); #endif 107.c ...

  4. EasyUI中Base(基础)的基本用法

    EasyUI中Base(基础)的用法 一.Base(基础) 1.parser 解析器 2.easyloader 简单加载 3.draggable 拖动 4.droppable 放置 5.resizab ...

  5. extern "C" 用法解析

    extern "c"用法解析 作者 作者Jason Ding ,链接http://www.jianshu.com/p/5d2eeeb93590 引言 C++保留了一部分过程式语言的 ...

  6. 变量的声明和定义以及extern的用法

    变量的声明和定义以及extern的用法                                          变量的声明不同于变量的定义,这一点往往容易让人混淆. l         变量 ...

  7. 关于extern的用法

    extern表示该变量或者函数时在另一个地方定义了. 在C++编程中,如果将程序分为多个文件,则需要有在文件间共享代码的方法,这时如果一个变量或者函数需要在多个文件中使用,则可以使用extern来声明 ...

  8. static和extern的用法小结

    以前写程序是,基本不管static和extern,一个工程文件也只有一个c文件.今天尝试用多个文件来写,自然就涉及到这两个关键词的使用,自己查了些资料,并且做了些实验,总结如下. extern的用法 ...

  9. scrapy之基础概念与用法

    scrapy之基础概念与用法 框架 所谓的框架就是一个项目的半成品.也可以说成是一个已经被集成了各种功能(高性能异步下载.队列.分布式.解析.持久化等)的具有很强通用性的项目模板. 安装 Linux: ...

随机推荐

  1. jquery循环语句if-else if-else

    jquery循环语句if-else if-elsecallbackFun()函数,开始是写的if-if-else.结果是不管第一个if有没有匹配到,会再次判断, 如果匹配到第二个if,则第二个if中的 ...

  2. python安装环境配置、python模块添加、sublime text编辑器配置

    前提: 本文讲述的是  windows环境 python相应的安装配置. 进入官网找安装包,官网地址如下:https://www.python.org/downloads/ 找到相应2.7.x或3.x ...

  3. C++_IO与文件4-简单文件的输入与输出

    通过键盘输入和屏幕输出被称为是控制台输入/输出: 更广义上讲控制台的输入/输出也是一种特殊的文件输入/输出: 当使用cin进行输入时,程序将输入视为一系列的字节,其中的每个字节都被解释成字符编码: 不 ...

  4. [WC2008]游览计划(斯坦纳树)

    [Luogu4294] 题解 : 斯坦纳树 \(dp[i][j]\) 表示以\(i\)号节点为根,当前状态为\(j\)(与\(i\)连通的点为\(1\)) 当根\(i\)不改变时状态转移方程是: \( ...

  5. C++ 构造函数与默认构造函数

    构造函数:C++用于构建类的新对象时需要调用的函数,该函数无返回类型!(注意:是“无”! 不是空!(void)). 默认构造函数:未提供显式初始值时,用来穿件对象的构造函数. 以上是二者的定义,但是单 ...

  6. 软件测试作业——WordCount的测试

    一.代码提交 1.代码地址:https://gitee.com/zst1978805482/WordCount 2.作业地址:https://edu.cnblogs.com/campus/xnsy/T ...

  7. cmake指令详解

    所需文件名:CmakeLists.txt,在需要操作的每个目录下都需要 PROJECT(工程名字)     这条指令会自动创建两个变量: <projectname>_BINARY_DIR( ...

  8. 转载收藏(js数组方法大全)

    js数组方法大全 JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组var arr2 = new Arra ...

  9. Linux——【rpm、yun、源码包】安装

    RPM包或者安装源码包 在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松,因为我们不是在图形界面下.所以我们要 ...

  10. Oracle RAC集群搭建(zero)--全是报错

    1. 提示Check if the DISPLAYvariable is set.    Failed<<<< 解决方案: #xhost +  //切换到root用户输入 #s ...