• 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

  • 相关阅读:
    软考知识点梳理--综合布线
    软考知识点梳理--典型应用集成技术
    软考知识点梳理--V型生命周期模型
    软考知识点梳理--人际沟通风格
    软考知识点梳理--沟通原则
    软考知识点梳理--项目建议书
    软考知识点梳理--版本管理
    软考知识点梳理--信息系统集成项目及特点
    软考知识点梳理--信息论
    软考知识点梳理--项目验收
  • 原文地址:https://www.cnblogs.com/letben/p/5292895.html
Copyright © 2020-2023  润新知