zoukankan      html  css  js  c++  java
  • 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这个头文件;

  • 相关阅读:
    VysorPro助手
    Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
    Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset
    Native SBS for Android
    ADB和Fastboot最新版的谷歌官方下载链接
    How do I install Daydream on my phone?
    Daydream Controller手柄数据的解析
    蓝牙BLE传输性能及延迟分析
    VR(虚拟现实)开发资源汇总
    Android(Java)控制GPIO的方法及耗时分析
  • 原文地址:https://www.cnblogs.com/anlia/p/5946506.html
Copyright © 2011-2022 走看看