![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 75
peiyao456
这个作者很懒,什么都没留下…
展开
-
函数重载
这篇文章,我将谈谈我自己对函数重载的简单认识。一开始,我们得明白,函数重载是什么??为什么要函数重载??函数重载可以做哪些事??函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。首先我先解释名字空间这个概念原创 2016-06-29 13:42:52 · 1852 阅读 · 0 评论 -
【C++】浅析C++中的对象模型
以下代码运行环境:windows8.1 32位 VS2015(一)不含有虚函数的单一继承模型:测试代码://单一继承,无虚函数class A{public: A(int a = 0, char c = 0) :_a(a) , _c(c) {} int GetA()原创 2017-02-06 21:26:01 · 596 阅读 · 0 评论 -
虚继承
1.菱形继承: 1>继承模型: 2>代码测试并查看内存模型#includeusing namespace std;class A{public: A(int a = 5) :_a(a) { cout<<"A的构造被调用"<<endl; } ~A() { cout<<"A被析构"<<原创 2016-12-18 14:28:58 · 797 阅读 · 0 评论 -
写出一个不能被继承的类
我们知道,一个类之所以可以被继承到子类,是因为该类的构造函数和析构函数都是公有的(因为构造子类的时候,一定是先要调用父类的构造函数)。如果我们将一个类的构造函数和析构函数都写成私有或者保护,那么它就不会被继承下去。看下边的代码:class B{public: static B& GetObject() { return *(new B); }privat原创 2016-11-12 16:35:02 · 803 阅读 · 0 评论 -
迭代器失效问题(一)
迭代器失效问题:不光vector中有迭代器失效问题,其实list中也有。list仅有指向被删除元素的迭代器失效。 下边给出一段代码:int main(){ vector array; array.push_back(1); array.push_back(3); array.push_back(3); array.push_back(5); vector:原创 2016-10-07 17:25:02 · 709 阅读 · 0 评论 -
剑指offer---不使用循环条件判断等实现求和
题目描述:求1+2+3+....+n,要求不使用乘除法,for,while,if,else,switch,case等关键字及三目表达式。题目分析:由于不能使用条件判断的关键字,所以,一般的递归也是不允许的,因为通过条件判断来确定递归是否结束。但是下边的方法有模仿递归来实现求和。方法一:构造函数由于静态成员是属于类而不属于对象,根据这一特性,来实现求和。下边给出代码:cl原创 2016-10-02 16:24:06 · 755 阅读 · 0 评论 -
c++中的类型转换
关于强制类型转换,在c语言中我们就知道有显式类型转换和隐式类型转换,在前边的博客《数字的奇妙世界》中有提到,这里就不说了,只讲c++中的强制类型转换。c++中的强制类型转换有以下四种方式:static_cast/reinterpret_const/const_cast/dynamic_caststatic_cast用于静态转换,但是不可用于不相关类型之间的转换。看下边的代码原创 2016-09-06 19:50:26 · 501 阅读 · 0 评论 -
c++中智能指针(二)
一、shared_ptr的循环引用问题在上篇文章中介绍了智能指针的基本知识,我们感觉shared_ptr好像特别厉害的样子,其实它就是特别厉害,只是它有循环引用的问题,看下边的代码:struct Node{ int _data; shared_ptr _next; shared_ptr _prev;};void test(){ shared_ptr sp1(new No原创 2016-09-05 16:14:49 · 488 阅读 · 0 评论 -
c++中智能指针(一)
一、智能指针的引入:智能指针为什么要引入呢?看下边的代码:void fun(){ int *p = new int(2); if(1) throw 1; delete p;}int main(){ try { fun(); }原创 2016-09-05 09:03:05 · 679 阅读 · 0 评论 -
面向对象c++之继承
面向对象三大机制包括:1.封装,隐藏内部实现。2.继承,复用现有代码。(面向对象最显著的特征)3.多态,改写对象行为。继承,是一种复用的手段。是从先辈处得到属性和行为特征。类的继承就是新的类从已有的类那里得到已有的特征。类成员的访问限定有三种:public,protected,private也有3种继承关系:public(公有继承),protected(保护继承),pr原创 2016-08-23 08:38:07 · 499 阅读 · 0 评论 -
c++中的重载,重写,重定义
c++中的几个容易混淆的概念:(1)重载:在同一作用域中,函数名相同,参数列表不同,返回值可同可不同的函数。关于函数重载的知识在《函数重载》这篇博客中有详细介绍。(2)重写:又叫覆盖,是指不在同一个作用域中(分别在父类和子类中),函数名,参数个数,参数类型,返回值类型都相同,并且父类函数必须有virtual关键字的函数,就构成了重写(协变除外)。协变:协变也是一种重写,只是原创 2016-08-31 18:12:21 · 654 阅读 · 0 评论 -
c++中的类型萃取
为什么会引入类型萃取??提高程序效率~~~原创 2016-09-08 22:44:00 · 1727 阅读 · 1 评论 -
日历计算器
有时候,我们需要知道某个日期的多少天后是哪一天,或者多少天之前是哪一天,甚至需要计算两个日期之间隔了多久等等。此篇文章用来实现日历计算器,包括以下功能:1.日期加天数2.日期减天数3.日期减日期4.打印给定月份的日期下边就各个功能予以分析: 【日期加天数】我们只需要在给定日期的day上加上天数,然后调整日期为正确的日期。比如:2016,8,18+20 =原创 2016-08-18 18:41:56 · 1697 阅读 · 0 评论 -
关于c++中的this指针
记忆中,初识c++中的this指针的时候,根本不知道它是什么,有什么作用。再识,就知道了它的作用,也掌握了它背后的东西。this指针,就是一个指向当前对象的指针。我们知道,定义出一个类,它在内存中是不占空间的,只有定义了该类类型的对象时,系统就会为该对象分配一段存储空间,这段空间里只存储成员变量,对于成员函数,是存放在代码区的。(复习:内存分为5大区:静态区、常量区、栈原创 2016-07-04 12:01:22 · 2883 阅读 · 3 评论 -
参数缺省,引用
本篇文章将整理出关于参数缺省和引用的一些知识。(一)参数缺省:参数缺省包括全缺省和半缺省。顾名思义,全缺省就是函数的所有参数都给出默认值,半缺省就是仅有函数的部分参数给出了默认值。看下边的一段代码:#includeusing namespace std;int Add(int x, int y){ return x + y;}int main(){ int r原创 2016-06-30 22:26:40 · 3359 阅读 · 0 评论 -
详解c++中类的六个默认的成员函数
类的6个默认的成员函数包括:构造函数、析构函数、拷贝构造函数、赋值运算符重载函数、取地址操作符重载、const修饰的取地址操作符重载。(一)构造函数构造函数,顾名思义,为对象分配空间,进行初始化。它是一种特殊的成员函数,具有以下特点原创 2016-07-06 13:01:35 · 19701 阅读 · 6 评论 -
【工具】valgrind检测C++代码内存泄漏
一、valgrind介绍:valgrind是Linux下的一个开源工具,该工具用来检测c++程序是否有非法使用内存的问题,例如访问了未初始化的内存、访问数组时越界、忘记释放动态内存等问题。Linux下使用命令或者源码安装:命令简单安装:yum install valgrind体系结构图如下:二、参数: --log-file=日志文件名称 --num-callers=错误记录...原创 2018-10-13 17:44:40 · 2713 阅读 · 0 评论