• 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 = 5;
    }
    
    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
    ", 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# 大端与小端
    【转】C#socket通信
    【转】Github 搜索技巧,快速找到好资源
    web api 跨域请求,ajax跨域调用webapi
    【转】Linux简介及最常用命令
    【转】带你吃透RTMP
    09-vuex基本应用之计数demo
    08-配置vue路由的步骤
    02-原型与原型链
  • 原文地址:https://www.cnblogs.com/anlia/p/5946506.html
Copyright © 2020-2023  润新知