
C++
文章平均质量分 67
清枫若待佳人醉
目前就职腾讯,从事推荐引擎相关工作,有感兴趣的可以互相讨论。
展开
-
模板和泛型编程
泛型编程概述:所谓泛型编程,就是独立于特定类型的方式写代码,是代码复用的一种方式。而模板是泛型编程的基础,所以具体说下模板相关的东西。模板的定义1、函数模板 2、类模板 先来说说函数模板相关的东西。 函数模板: Ⅰ、类型模板 首先给出Add函数的模板版本:template<typename T> inline T Add(T left, T right) { return left原创 2017-03-12 11:24:08 · 703 阅读 · 0 评论 -
vecotr和list的区别
1、结构 vector是一个顺序结构,是一块连续的内存空间。 list是一个链式结构,许多小块内存通过指针来连接2、支持操作 vector是连续空间,很好的支持随机访问,iterator支持”+”,”+=”,”<”等操作符 list空间不连续,iterator不支持”+”,”+=”,”<”3、效率 vector插入删除元素的时候,需要移动大量的元素 list插入删除元素的时候,只需要改变原创 2018-04-13 10:24:38 · 356 阅读 · 0 评论 -
malloc和new的区别
最近找实习生,这个问题被问的太多了,所以想把最近被高频率问到的东西整理一下,以备后续复习。一、malloc和new的区别: 1、malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2、new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的。而malloc返回的都是void指针,需要进行强转。3、如果原创 2018-04-13 10:21:27 · 294 阅读 · 0 评论 -
区分接口继承和实现继承
本文系整理Effective C++中的条款34首先当我们设计一个基类的时候,对于派生类的需求可能有下面几种 派生类只继承基类的接口(即函数的声明); 派生类同时继承接口和实现,并且希望能够重写(多态)自己的版本 派生类同时继承接口和实现,但是不允许重写任何东西 说这些晦涩难懂的文字,一时半会不好理解,下面分别举实例,用代码来解读这三种需求。下面是一个展现绘图程序中各种几何图形的class继承体系:原创 2018-03-14 15:41:26 · 7248 阅读 · 1 评论 -
不要在构造和析构函数中调用虚函数
注:本文对应Effective C++ 条款9基类是一个模拟股票交易的类,成员函数logTransaction()是记录每一笔交易,具体买/卖派生类实现自己的记录函数。基类的构造函数中调用了这个虚函数。 先来思考下面这段代码:#include<iostream> using namespace std;//交易类 class Transaction { public: Transactio原创 2018-03-15 16:09:23 · 671 阅读 · 0 评论 -
c++string类(浅拷贝,深拷贝,写实拷贝的优点和缺陷)
前言 楼主现在大三,鉴于年后想找一个实习,故寒假在家复习一些学过的知识点,前几天看到一篇关于string类的文章,细读之后,发现我还是有许多遗漏的地方,经过这几天的学习,想通过这篇文章,将有关string类的东西都记录一下。 重点介绍: 浅拷贝 深拷贝 写时拷贝 写时拷贝隐含的问题 下面的文章将会以上面的四点进行展开,至于代码,我会在linux和vs下都跑一下,因为我发现编译器不同。有原创 2018-02-04 20:23:27 · 1764 阅读 · 0 评论 -
C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
在C++的类定义里面,可以看到类似下面的定义:class List { private: Node * p_head; int length; …… Public: int GetLength () const; bool GetNodeInfo(const int index,Node & buffer) const {…… } bool转载 2017-12-30 20:51:18 · 257 阅读 · 0 评论 -
delete释放new[ ]开辟的内存
直接看下面这道题:使用 char* p = new char[10]申请一段内存,然后使用delete p释放,有什么问题? A:会有内存泄露 B:不会有内存泄露,但不建议用 C:编译就会报错,必须使用delete []p; D:编译没问题,运行会直接崩溃 这道题题目开辟的是10个char类型的空间,因为是内置类型,析构时不会调用析构函数,所以并不会产生内存泄漏的问题,故而选择B。 但是原创 2017-10-03 23:02:13 · 3169 阅读 · 0 评论 -
c++智能指针
C++ 智能指针详解,本文系转载,原文出处 诚然原博主总结的非常好,我只是加一些自己觉得需要补充的地方,并且在最后给出目前c++11在智能指针这方面的弥补。一、简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能转载 2017-09-13 11:37:28 · 377 阅读 · 0 评论 -
C++日期类的实现
//功能实现的不是很完全,也借鉴了网上的巧妙方法,如确定每个月的天数用数组直接解决。 //类的定义以及各种操作符的声明。 define num 100;class Date { friend ostream& operator<<(ostream& _cout, const Date& d); friend istream& operator>>(istream& _cin, Date&原创 2017-03-15 16:26:08 · 484 阅读 · 0 评论 -
string中的npos
STL中的string.find()函数原型如下: size_t find (const string& str, size_t pos = 0) const noexcept; size_t find (const char* s, size_t pos = 0) const; size_t find (const char* s, size_t pos, size_type n)...原创 2018-06-27 14:02:44 · 1315 阅读 · 0 评论