美文网首页
剑指Offer学习笔记

剑指Offer学习笔记

作者: caoxian | 来源:发表于2018-04-01 15:59 被阅读0次

面试题1:赋值运算符函数

如下为CMyString的声明,请为该类添加赋值运算符函数。

class CMyString{

public:

    CMyString(char* pData = NULL);

    CMyString(const CMyString& str);

    ~CMyString(void);

private:

    char *m_pData;

};

注意点:

1.函数应返回自身的引用,这样才可以进行连续赋值。str1=str2=str3;

2.应该将传入的参数值声明为常量引用,减少复制消耗,并且保证不修改传入的实例。

3.释放自身的内存。

4.判断传入的实例是否就是自身,如果就是自身,那么释放内存时就会将传入的实例释放,导致无法复制。

参考代码:

CMyString& CMyString::operator=(const CMyString& str){

    if (this == &str) {

        return *this;

    }

    delete []m_pData;

    m_pData = NULL;

    m_pData = new char[strlen(str.m_pData)+1];

    strcpy(m_pData, str.m_pData);

    return *this;

}


面试题2:实现singleton模式

题目:设计一个类,要求该类只能生成一个实例

注意点:

1.线程安全,考虑到多线程环境,两个线程可能同时创建一个实例。

2.效率高。

3.代码简洁。

单例的两种模式

        懒汉模式:在第一次使用的时候才实例化对象

        饿汉模式:在单例类定义时就实例化对象

代码实现:

懒汉实现:

class LazySingleton{

protected:

    LazySingleton(){

        pthread_mutex_init(&mutex, NULL);

    }

public:

    static pthread_mutex_t mutex;

    static LazySingleton* instance();

    int a;

};

pthread_mutex_t LazySingleton::mutex;

LazySingleton* LazySingleton::instance(){

    pthread_mutex_lock(&mutex);

    static LazySingleton obj;

    pthread_mutex_unlock(&mutex);

    return &obj;

}

饿汉实现:

class HungrySingleton{

protected:

    HungrySingleton(){

    }

private:

    static HungrySingleton* p;

public:

    static HungrySingleton* instance();

};

HungrySingleton* HungrySingleton::p = new HungrySingleton();

HungrySingleton* HungrySingleton::instance(){

    return p;

}

相关文章

  • Hello Offer

    这个文集记录我在看《剑指 offer》第二版的学习笔记。

  • 剑指Offer学习笔记

    面试题1:赋值运算符函数 如下为CMyString的声明,请为该类添加赋值运算符函数。 class CMyStri...

  • 单例模式

    单例模式 最近在看《剑指offer》,根据《剑指offer》的讲解,结合《effectiveJava》简单学习了一...

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指offer学习笔记:8.3 链表

    面试题56:链表中环的入口一个链表中含环,如何找到环的入口牛客网链接 https://www.nowcoder.c...

  • 剑指offer学习笔记:8.1 数组

    面试题51:数组中重复的数字在一个长度为n的数组中,所有数字都在0到n-1的范围内。数组中的某些数字是重复的,但是...

  • 剑指offer学习笔记:8.4 树

    面试题58:二叉树的下一个节点给定一个二叉树和其中一个节点,如何找到中序遍历顺序的下一个节点?树中的节点除了有两个...

  • 剑指offer学习笔记:整体结构

    67道经典面试题+相关扩展 c++版 从面试题6开始附leetcode或者牛客网连接 哎,简书怎么上传xmind呀

  • 剑指offer 和 leetcode题目

    剑指offer leetcode

  • 剑指offer习题笔记

    研一的时间感觉如白驹过隙,真的是一下子就从指尖溜走了,回头看过去一年学过的东西,感觉无论是哪个方面都有浅尝辄止,蜻...

网友评论

      本文标题:剑指Offer学习笔记

      本文链接:https://www.haomeiwen.com/subject/pwwocftx.html