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

c++与c不太相同的一些地方2的更多相关文章

  1. c++与c不太相同的一些地方1

    1.c++区别与java的一个地方:C++更多的是一种规范,不同时期的不同标准,提供了不同的语法要求.所以各个厂商在对C++的支持上也做得不尽相同,比如有些语法vs就支持gcc 就支持的差一些,而某些 ...

  2. 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...

  3. (转)深入理解Java的接口和抽象类

    原文地址: http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP ...

  4. 深入理解Java的接口和抽象类(转)

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  5. 关于SharePoint 2013的工作流(二)

    摸索完了如何画流程实现功能接下来,就是如何配置和部署了.在添加工作流之前,肯定需要一个审批人的配置以及阀值等等的配置. 这个的实现基本上和以前的工作流一致.写法却不一样了,模板自带的都是用js实现的. ...

  6. 【转载】Java垃圾回收机制

    原文地址:http://www.importnew.com/19085.html Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联 ...

  7. 深入理解Java的接口和抽象类

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  8. Android编程容易犯的错误之二

    11.不要太相信工具,比如Eclipse里面的断点遇到多线程什么,经常不起作用/走不到,还有就是如果语句为空的也不会走,这时候别太早下结论断点地方出错了, 所以每个工程都应该有日志的开关,通过查看日志 ...

  9. EnglishLeaning

    今天看了些hadoop官方reference感觉自己词汇量和语法真是又回到解放前了.于是,痛下决心要好好学习英语.找到了一些学习的方法,自己记录下来,也和大家一起借鉴 努力目标: 掌握大量的计算机英语 ...

随机推荐

  1. Tomcat安全

    一.版本安全 升级当前的tomcat版本为最新稳定版本.故名思议,最新稳定版本就要兼顾最新和稳定这两个概念.一个稳定的版本,是需要时间沉淀的,而最新又是相对于稳定版而言的最新.因此我们一般会选择当前大 ...

  2. 在FOR中使用close window,循环次数大于1就会报异常

    在FOR循环中执行以下动作: 场景:1.打开页面A,    2.点击A中的链接打开新的window, 3.将driver切换到新window, 4.close window 5.再切换到页面A 时出异 ...

  3. Zabbix探索:Proxy没有回传任何数据

    因为Zabbix使用Puppet搭建的,实际上是通过脚本安装的,为了偷懒,将脚本都写一块去了,后来发现Proxy的配置和Zabbix的配置不同,又偷懒一次,复制了一下,但是为了调整脚本使用的便捷性,将 ...

  4. shell ftp上传下载文件

    1. ftp自动登录批量下载文件. #####从ftp服务器上的/home/data 到 本地/home/databackup#### #!/bin/bash ftp -n<<! open ...

  5. cygwin远程操作linux

    远程登录 1.ssh <username>@<IP> eg:ssh root@10.20.30.255 2.输入密码就OK 远程拷贝 1.scp -r <username ...

  6. HW7.1

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  7. HDU-4689 Derangement DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4689 题意:初始序列1,2...n,求所有满足与初始序列规定大小的错排数目.. 这道题目感觉很不错~ ...

  8. 成功在BAE上部署ghost 5.0

    这周摸索着网站的建设,终于在今天成功上线!这里要谢谢ghost中文网和群里的网友,他的博客在这opengiser.他们的帮助太重要了.现在把过程记录下来,共同学习.试运营地址在edwardesire. ...

  9. hdoj 1162 Eddy's picture

    并查集+最小生成树 Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  10. Web 应用的安全性

    Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分.用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统.用户授权 ...