1、一般全局变量放到cpp 文件里面,而不是.h 里面。要不然容易乱套,这个乱几次就好了,先记住这样一种编码规范。

以为大家都引入就比较麻烦,但是实现起来就只有cpp里面才有。毕竟.h是要被包含的文件,使用的时候就有可能会出现问题。

在访问的时候使用extern关键字。

说到extern 就稍微扩展一下吧。还有就是在C,C++混合编程的时候,把c的代码扩在extern的里面,举例:

Extern{

/*c语言

的代码

*/

【记不记得之前说过C语言不支持重载,但是c++是支持重载的。那个地方就可以看到一些端倪,为了实现重载,为了让C++的编译器支持C语言,C++还是做了很多的努力的。比如在编译的时候,为C++函数增加了头和尾巴。随便举个例子吧比如原函数是: void myfunction(void){}.这个C++函数在编译以后会变成 sdmyfunctionv 大概长成这个样子。所以,在编译的时候,总是会出现一些不太一样的地方,这就需要,我们把当前文件或者一部分文件按照C的方式编译。】

所以extern有两个应用场景。1、引入外部变量,2、让代码段以C的方式编译。

2、初始化方式:

#include <iostream>
using namespace std;
class MyClass{
public:
MyClass(){
cout<<"no parameter"<<endl;
}
MyClass(int a){
cout<<"int:"<<a<<endl;
}
};
int main()
{
MyClass *myClass = new MyClass();//无参构造
MyClass *myClass1 = new MyClass();//有参构造
MyClass myClasses[] = {MyClass(),MyClass(),MyClass()};//对象数组的实例化。
cout << "Hello World!" << endl;
return ;
}

单例设计模式:

主要是静态变量的初始化:

mysingle.h

#ifndef MYSINGLE_H
#define MYSINGLE_H
class MySingle
{
private:
MySingle();
static MySingle *mySinglePtr;
public:
static MySingle *getMySingle(void);
static void freeMySingle(void);
void freeCurrentSingle(void);
};
#endif // MYSINGLE_H

main.cpp

#include <iostream>
#include <mysingle.h>
using namespace std;
int main()
{
MySingle *mySingle = MySingle::getMySingle();
MySingle *mySingle1 = MySingle::getMySingle();
cout<<"mySingle address: "<<mySingle<<endl;
cout<<"mySingle1 address: "<<mySingle1<<endl;
MySingle::freeMySingle();
mySingle->freeCurrentSingle();
mySingle1->freeCurrentSingle();
cout << "Hello World!" << endl;
return ;
}

mysingle.cpp

#include "mysingle.h"
#include <iostream>
MySingle *MySingle::mySinglePtr=NULL;
//蒙蔽了,这个得这么看: MySingle * 是类型,MySingle::mySinglePtr=NULL;
//是MySingle 里面的mySinglePtr 这个属性的值 然后置空了。
MySingle::MySingle()
{
}
MySingle *MySingle::getMySingle()
{
if(mySinglePtr==NULL){
mySinglePtr = new MySingle();
}
return mySinglePtr;
}
/**
* @brief MySingle::freeMySingle
* 由类释放
*/
void MySingle::freeMySingle()
{
if(mySinglePtr!=NULL){//如果不为空的话,
delete mySinglePtr;//释放对应的内存
mySinglePtr = NULL;//然后指向空
}
}
/**
* @brief MySingle::freeCurrentSingle
* 由对象释放。
*/
void MySingle::freeCurrentSingle()
{
if(mySinglePtr!=NULL){
delete mySinglePtr;
mySinglePtr = NULL;
}
}

部分快捷键:

http://www.tuicool.com/articles/IjuaQz

最新文章

  1. ASP.NET MVC 利用IRouteHandler, IHttpHandler实现图片防盗链
  2. HTML5 —— 自学第一课
  3. Linux 下安装中文 ctex 指南
  4. LeetCode - Populating Next Right Pointers in Each Node
  5. js 中 toString( ) 和valueOf( )
  6. Python与Hack之window下运行带参数的Python脚本,实现一个简单的端口扫描器
  7. [LintCode] Candy 分糖果问题
  8. atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
  9. C#路径总结
  10. linux环境(CentOS-6.7)下redis集群的搭建全过程
  11. 添加navbar以及上面的左右按钮代码
  12. kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)
  13. IE6不完全支持!important
  14. Linux常见命令整理(一)
  15. Visual Studio 我的插件
  16. 简易发号SQL,可用于生成指定前缀自增序列,如订单号,生成优惠券码等
  17. 等高布局display:table
  18. python实现斐波那契数列
  19. ab参数详解 – 压力测试
  20. linux一切皆文件之tcp socket描述符(三)

热门文章

  1. chrome启用本地文件
  2. Excel2010: Excel使用小技巧(不断更新)
  3. bzoj 3122 [Sdoi2013]随机数生成器(逆元,BSGS)
  4. 在win64位,python64位2.7版本中安装pyHook
  5. cubla sample-code
  6. [转]常用的130个vim命令
  7. Android实例-TRectangle加载图片(XE8+小米2)
  8. hdoj 1872 稳定排序
  9. ScrollView详解
  10. Java JNI调用c语言的dll测试