zoukankan      html  css  js  c++  java
  • c++与c不太相同的一些地方2

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

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

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

    说到extern 就稍微扩展一下吧。还有就是在CC++混合编程的时候,把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(9);//有参构造
        MyClass myClasses[3] = {MyClass(1),MyClass(2),MyClass(3)};//对象数组的实例化。
        cout << "Hello World!" << endl;
        return 0;
    }

    单例设计模式:

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

    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 0;
    }

    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

  • 相关阅读:
    分享一款颜色神器ColorSchemer Studio
    只要你用atom修改后保存代码文件的时候,你在chrome上的页面就会自动刷新。
    十六进制颜色代码
    WordPress窗体化侧边栏
    QQ输入法中英文标点符号快速切换
    Android ListView的item背景色设置以及item点击无响应等相关问题
    Android内存优化(使用SparseArray和ArrayMap代替HashMap)
    [Fatal Error] :3:13: Open quote is expected for attribute "{1}" associated with an element type "id".
    java模式—装饰者模式
    Java模式—适配器模式
  • 原文地址:https://www.cnblogs.com/letben/p/5292895.html
Copyright © 2011-2022 走看看