剑指offer PART 2

书点击自取 提取码: njku

标签(空格分隔): 笔记


C++知识点:

1、面向对象的特性   2、构造函数 3、析构函数 4、动态绑定 5、常用的设计模式 6、UML图 7、算法(空间、时间 复杂度)

Content of Q

序号 题目 页数
1 赋值运算符函数 25

Q:下列程序为何会编译错误

class A
{
private:
int value;
public:
A(int n) { value = n; }
A(A other) { value = other.value; }
void Print() { std::cout << value << std::endl; }
} int _tmain(int argc, _TCHAR* argv[])
{
A a = 10;
A b = a;
b.Print(); return 0;
}

A:

在 A b = a 时调用拷贝构造函数,而拷贝构造函数 A(A other)中参数为实例,而此时实例 other 也没有创建,故需要先 A other = a;而此时会再一次调用拷贝构造函数,则会再一次调用 A other = a,依次循环...,所以此语句会陷入无限循环,故会编译错误。

正确写法的拷贝构造函数的参数应为常量实例引用

A( const A &other);

Q1:赋值运算符函数

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

class CMyString
{
public:
CMyString(char* pData = nullptr);
CMyString(const CMyString& str);
~CMyString(void); pravite:
char* m_pData;
};

关注点:

  1. 是否把返回值得类型声明为该类型的引用,并在函数结束前返回实例自身的引用(*this),因为只有返回引用才可以允许连续赋值。若返回void,则无法进行连续复制
  2. 是否把传入的参数的类型声明为常量引用。若参数的非引用,而为实例,则形参到实参会调用一次复制构造函数。
  3. 是否释放实例自身的内存。若在分配新内存之前未释放自身已有的空间则会导致内存泄露
  4. 判断传入的参数和当前的实例(*this)是否为同一个实例,若为同一个则不进行复制操作,直接返回。

初级程序的经典解法

CMyString& CMyString::operator = (const CMyString &str)
{
if(this == &str)
return *this;
delet []m_pData;
m_pData = nullptr; m_pData = new char[strlen(str.m_pData) + 1];
strcpy(m_pData, str.m_pData); return *this;
}

Q1.1: C++中可以用struct和 class来定义类型。这两种类型的区别是什么?

如果没有标注成员函数或者成员变量的访问权限级别,那么在struct中默认为public,而在class中默认的private。

Q2:实现Singleton模式

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

https://blog.csdn.net/Rick1860/article/details/82984183

剑指offer PART 2的更多相关文章

  1. 剑指Offer面试题:1.实现Singleton模式

    说来惭愧,自己在毕业之前就该好好看看<剑指Offer>这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及.但是后悔是没用的,现在趁还有余力,把这本书好好看一遍,并通过C#通通实 ...

  2. 剑指Offer面试题:14.链表的倒数第k个节点

    PS:这是一道出境率极高的题目,记得去年参加校园招聘时我看到了3次,但是每次写的都不完善. 一.题目:链表的倒数第k个节点 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯,本题 ...

  3. 《剑指offer》面试题12:打印1到最大的n位数

    面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...

  4. 《剑指offer》面试题11: 数值的整数次方

    面试题11: 数值的整数次方 剑指offer面试题11,题目如下 实现函数double power(double base,int exponent),求base的exponent次方, 不得使用库 ...

  5. 剑指 Offer 题目汇总索引

    剑指 Offer 总目录:(共50道大题) 1. 赋值运算符函数(或应说复制拷贝函数问题) 2. 实现 Singleton 模式 (C#) 3.二维数组中的查找 4.替换空格              ...

  6. 面试题目——《剑指Offer》

    1.把一个字符串转换成整数——<剑指Offer>P29 2.求链表中的倒数第k个结点——<剑指Offer>P30 3.实现Singleton模式——<剑指Offer> ...

  7. 剑指offer习题集2

    1.把数组排成最小的数 class Solution { public: static bool compare(const string& s1, const string& s2) ...

  8. 剑指offer习题集1

    1.打印二叉树 程序很简单,但是其中犯了一个小错误,死活找不到,写代码要注意啊 这里左右子树,要注意是node->left,结果写成root->left vector<int> ...

  9. 剑指Offer:面试题20——顺时针打印矩阵(java实现)

    题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数 字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, ...

  10. 牛客网上的剑指offer题目

    题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 题目:请实现一个函数,将一 ...

随机推荐

  1. Linux命令:dirs

    语法 dirs [-clpv] [+N | -N] 说明 打印目录栈内容. 不带任何参数,在一行里打印.空白分隔. /home/code/dir/crypto /home/code/a/b /home ...

  2. ThinkPHP实现支付宝接口功能 代码实例

    我们这里用的是即时到帐的接口,具体实现的步骤如下: [title]一.下载支付宝接口包[/title]下载地址:https://doc.open.alipay.com/doc2/detail?tree ...

  3. python拼接字符串方法汇总

    python拼接字符串一般有以下几种方法: 1.直接通过(+)操作符拼接 s = 'Hello'+' '+'World'+'!' print(s) 输出结果:Hello World! 这种方式最常用. ...

  4. yii2.0 引入autoload.php提示Operation not permitted

    open_basedir()配置下就可以了.比如目录是/www/ad/web/yii/就在/usr/local/nginx/conf/fastcgi.conf里面修改下配置 opendir=/www/ ...

  5. 图解Windows 10下Visual Studio Code的下载和安装

    1. 百度搜索“Visual Studio Code”,如下图所示: 2. 点击第一个搜索结果项,进入官方网站,然后点击“Download for Windows”,如下图所示: 3. 进入提示下载页 ...

  6. ESP8266 软件实现 Delta-sigma(ΔΣ)调制器 并通过I2S接口输出编码流

    一.关于Delta-sigma(ΔΣ)调制器 Delta-sigma(ΔΣ)调制器是Delta-sigma转换器的核心部件.如下所示为一个简单的一阶Delta-sigma调制器,该调制器产生一个1bi ...

  7. python 错题集

    1.IOError: [Errno 22] invalid mode ('rb') or filename: '\xe2\x80\xaaD:\NLP\cv082_11080.csv' 将一个py文件用 ...

  8. centos7下Etcd3集群搭建

    一.环境介绍 etcd主要功能是分布式的存储键值,优点不多说了,分布是集群,自动选举等等,自行百度,主要说下配置方法,折腾了几天,终于优点眉目了,记录下操作方法,本文参考了如下链接 https://w ...

  9. UnitZ Battlegrounds beta5 - Unity吃鸡类型游戏模版 源码 仿绝地求生

    Requires Unity 2018.2.6 or higher.The first battle royale game starter kit on Asset Store, all syste ...

  10. mysql学习5:数据库设计

    mysql学习5:数据库设计 本文转载:https://blog.51cto.com/9291927/2087925:原创为天山老妖S 一.数据库设计简介 按照规范设计,将数据库的设计过程分为六个阶段 ...