最近在C++ 中用到extern关键字的一点点感悟
来源:互联网 发布:襄阳网络电视台台湾周 编辑:程序博客网 时间:2024/05/16 05:41
在C代码中extern关键字修饰变量很常见,而在真正的C++代码中extern关键字修饰变量却很少见。
extern修饰变量: 表明该变量在别的地方已经定义过了,在这里要修改或使用这个变量。
一、C的编码习惯小例子:
(1) 在test1.h中有下列声明:
#ifndef TEST1H #define TEST1H extern char g_str[]; // 声明全局变量g_str void fun1(); #endif(2) 在test1.cpp中
#include "test1.h" char g_str[] = "123456"; // 定义全局变量g_str void fun1() { cout << g_str << endl; }
(3) 在test2.cpp中
#include "test1.h" void fun2() { cout << g_str << endl; }
二、把上边的例子改造成C++习惯代码
(1) test1类
test1.h
class Test1{private:char str[] = "123456";int flag = 0;public:void Fun1();char *GetStr();void SetFlag(int value);int GetFlag();};test1.cpp
#include "test1.h"void Test1::Fun1() { cout << str << endl; }char *Test1::GetStr(){return str;}void Test1::SetFlag(int value){flag = value;}int Test1::GetFlag(){return flag;}(2) test2类
test2.h
class Test2{public:Test2();~Test2();void Fun2();void Fun3();public:Test1 *pGlobalVeriable_;};test2.cpp
#include "Test2.h"Test2::Test2(){pGlobalVeriable_ = new Test1();}~Test2::Test2(){}void Test2::Fun2() { //cout << str << endl; cout << pGlobalVeriable_->GetStr() << endl; //通过test1的对象指针调用成员函数来获取test1类中的str 的值}void Test2::Fun3(){cout << pGlobalVeriable_->GetFlag() << endl; //通过test1的对象指针调用成员函数来设置获取test1类中的flag的值pGlobalVeriable_->SetFlag(5);cout << pGlobalVeriable_->GetFlag() << endl;}
(3)test3类如果类test3 想与类test2中这个test1类对象同步,可以在test2类中,实例化test3类对象时,把对应的test1类对象指针传进来:
test3.h
class Test3{public:Test3(Test1 *GlobalVeriable); // 实例化时,传入类test1实例化对象指针~Test3();void Fun3();void SetGlobalVeriable(Test1 *GlobalVeriable);public:Test1 *pGlobalVeriable_;};
test3.cpp
#include "Test3.h"Test3::Test3(Test1 *GlobalVeriable){SetGlobalVeriable(GlobalVeriable);}~Test3::Test3(){}void Test3::SetGlobalVeriable(Test1 *GlobalVeriable){pGlobalVeriable_ = GlobalVeriable;}void Test3::Fun3(){cout << pGlobalVeriable_->GetFlag() << endl;pGlobalVeriable_->SetFlag(7);cout << pGlobalVeriable_->GetFlag() << endl;}
题外话:
本人是写一直C代码,最近在纯C++代码基础上加一个一部分功能,开始为了简单用extern关键字修饰变量,把
功能基本完成了,但在纯C++代码中看着这几个extern关键字越看越别扭,决定用C++的习惯改一下。
本人感觉C有C的好处:简单直白,容易实现,其实extern声明的变量也可以统一管理,这样跟C++就有点类似了;
C++有C++的好处:委婉含蓄 ,繁琐一些,代码多了可读性也不会下降;
在项目过程中我之所以没有把extern声明变量没有用统一管理的方法,就是想保持原来代码工程C++统一的代码风格。
仅个人观点,各有个的好处,O(∩_∩)O~
0 0
- 最近在C++ 中用到extern关键字的一点点感悟
- 最近的一点点感悟。
- 在C编程中使用到的几个重要关键字之一extern
- 在C编程中使用到的几个重要关键字之一extern
- c-c++:extern的些许感悟
- "extern C"关键字的作用
- C语言在头文件中用extern架起变量沟通的桥梁
- C语言中关键字extern的作用
- C/C++中extern关键字的用法
- c语言的static和extern关键字
- C语言中extern关键字的使用
- C语言中的extern关键字的用法
- C语言中 extern 关键字的用法
- C/C++中extern关键字的用法
- C/C++中extern关键字的用法
- 关于C语言的关键字extern
- C/C++ extern关键字的详解
- 信息系统监理的一点点感悟
- 分解质因数
- ioncube加密与解密 php代码
- MFC MainFrame中的 OnShowWindow一个bug
- Hadoop集群环境搭建
- 告诉你一个去除PDF文件水印简单快速的方法
- 最近在C++ 中用到extern关键字的一点点感悟
- raise number of connections
- 2017年1月22日,我打算开始记录自己接下来的学习、生活、工作历程。
- 在centOS上配置Nodejs和MongoDB环境
- Apache Thrift
- The volume XXX is not re-mountable in read/write mode.
- 产品经理的工作
- 常用的webpack命令
- 2.Gradle的学习系列