zoukankan      html  css  js  c++  java
  • 光鉴科技面试

    1.C++11中的线程,生产者和消费者模式

    2.多线程中同步的方法

    互斥量,信号量,条件变量,读写锁;

    3.设计模式中的简单工厂和工厂方法和抽象工厂

    4.快速排序的原理,如何判定一个排序算法是稳定的

    5.单例模式如何实现的

    #include <iostream>
    using namespace std;
    
    class CSingleton
    {
    private:
        CSingleton()    //ctor should be private.
        {
        }
        static CSingleton * m_pInstance; //C++类中不可以定义自己类的对象,但是可以定义自己类的指针和引用.
    
    public:
        static CSingleton * GetInstance()
        {
            if (m_pInstance == nullptr)
            {
                m_pInstance = new CSingleton();
            }
            return m_pInstance;
        }
    };
    
    
    int main()
    {
        CSingleton * pcs = CSingleton::GetInstance();
        CSingleton cs;    //会报错,不允许其他方式生成该类的对象
        return 0;
    }

     上面写的有问题,会报错:

    undefined reference to `CSingleton::m_pInstance'

    因为static变量需要在类外初始化.为什么呢?因为静态变量不属于某个对象,而是属于类,如果放在类内初始化,则变成了这个对象的了,这就和之前的假设矛盾了.
    因此需要改为:
    #include <iostream>
    using namespace std;
    
    class CSingleton
    {
    private:
        CSingleton()    //ctor should be private.
        {
        }
        static CSingleton * m_pInstance; //C++类中不可以定义自己类的对象,但是可以定义自己类的指针和引用.
    
    public:
        static CSingleton * GetInstance();
    
    };
    
        CSingleton *  Singleton::m_pInstance = nullptr;  //定义时不需要static了.
        Singleton * Singleton::GetInstance();
        {
            if (m_pInstance == nullptr)
            {
                m_pInstance = new CSingleton();
            }
            return m_pInstance;
        }
    
    
    int main()
    {
        CSingleton * pcs = CSingleton::GetInstance();
        CSingleton cs;    //会报错,不允许其他方式生成该类的对象
        return 0;
    }
    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    团队编程项目作业3-模块测试过程
    团队编程项目作业3-模块开发过程
    课后作业-结队编程项目进度
    团队编程项目作业2-团队编程项目代码设计规范
    课后作业-阅读任务-阅读提问-1
    团队-爬取豆瓣电影Top250-项目总结
    团队-爬取豆瓣Top250-最终程序
    课后作业-阅读任务-阅读提问-4
    《20171129-构建之法:现代软件工程-阅读笔记》
    《软件工程课程总结》
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/11885127.html
Copyright © 2011-2022 走看看