C++
Quinn0918
在生活中,对于自己和别人,我常常会说:“人生没有白走的路,每一步都算数!”
在干部生涯中,至今还担任院学生会主席,我经常对我的干部们说“在别人之上要把别人当人,在人之下要把自己当人。”
此时此刻,我想在博客里对自己说:“就在这儿,一定要成功!”
展开
-
C++入门基础知识
1.命名空间C++ Namespace 详解 命名空间的定义格式为:(取自C++标准文档)named-namespace-definition: namespace identifier { namespace-body }unnamed-namespace-definition: namespace { namespa原创 2017-06-18 20:24:19 · 554 阅读 · 0 评论 -
智能指针
智能指针智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造原创 2017-08-05 23:48:17 · 1553 阅读 · 1 评论 -
C++实现Vector->类型萃取和List->迭代器
容器1.Vector(也可以称之为顺序表)#include <iostream>using namespace std;#include <assert.h>template <class T>class Vector{public: Vector()//构造函数 :_data(NULL) , _size(0) , _capa(0)原创 2017-08-03 13:09:04 · 1362 阅读 · 0 评论 -
菱形继承(虚函数)->菱形虚拟继承(虚函数)->多态系列问题
读者注意:阅读这篇文章时,对继承中的对象模型要有一定了解;觉得自己不确定的话单击下面的“继承”。继承多态多态按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。直白点理解就是不同的对象收到相同的消息时,产生不同的动作。(随风倒)多态可以分为静态多态和动态多态。 静态多态:是在编译器期间完成的,也叫早期绑定; 动态多态:在程序执行期间(非编译期)判断所引用对象的实际类原创 2017-07-27 13:53:21 · 3345 阅读 · 0 评论 -
C++实现顺序表->单链表->双向链表
C++实现顺序表Seqlist.h#pragma oncetypedef int DataType;#include<assert.h>class Seqlist{public: Seqlist()//构造函数 :_data(NULL) , _size(0) , _capa(0) { } ~Seqlist()//原创 2017-07-20 02:30:31 · 1363 阅读 · 0 评论 -
写时拷贝
怎么样解决浅拷贝中同一块空间被释放多次?在深浅拷贝中我们提到过浅拷贝的两大缺点,并且用现代深拷贝和传统深拷贝去解决它。当然,我们除了用深拷贝以外,常用的还有引用计数的浅拷贝。引用计数的浅拷贝如何实现:我们为每个内存的字符数组添加一个引用计数pcount,即就是在构造函数申请空间的时候多申请出来4个字节。表示有多少个对象使用这块内存,有多少个对象使用,就让pcount值加1,当对象被析构的时候,让pc原创 2017-07-16 16:46:53 · 872 阅读 · 0 评论 -
String类
String.h#pragma once#include<iostream>using namespace std;#include<assert.h>class String{public: String(char *str = "")//构造函数 { _size = strlen(str); _capa = _size;原创 2017-07-15 12:15:56 · 742 阅读 · 0 评论 -
动态内存管理
1.总结并剖析malloc/free和new/delete之间关系和差异malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。malloc/free需要手动计算类型大小且返回值会void*,new/delete可自己计算类型的大小,返回对应类型的指针。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。原创 2017-07-14 00:37:48 · 806 阅读 · 0 评论 -
日期类->日期计算器
date.h#pragma once#include<iostream>using namespace std;class Date{ friend ostream& operator<<(ostream& out, const Date& d); friend istream& operator>>(istream& out, Date& d);public: Da原创 2017-07-13 00:32:32 · 1130 阅读 · 0 评论 -
complex类
complex.h 复数的四则运算不懂得网上都有,直接贴代码#pragma once#include<iostream>using namespace std;class Complex{public: //四个成员函数 Complex(double real = 0.0, double image = 0.0)//构造函数 { cout <<原创 2017-07-12 21:30:33 · 1153 阅读 · 0 评论 -
深浅拷贝
浅拷贝简单的来说就是,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。举个例子:#include<iostream>using namespace std;#include<string.h>class String{public: String(char *str="") {原创 2017-07-14 12:22:50 · 751 阅读 · 0 评论 -
构造拷贝构造的N中调用情况的问题
简单的写一个日期类,包含四个默认成员函数注意:调用构造函数的次数+调用拷贝构造的次数=析构的次数 本例中 有一个Date变量和main函数的生命周期是一样的,所以会少一次析构。 如果把测试用例封装到函数中,则调用析构的次数正确。#pragma once#include<iostream>using namespace std;class Date{public: Date()原创 2017-07-13 19:22:20 · 1033 阅读 · 0 评论 -
类和对象->四个默认成员函数->运算符重载
类和对象类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间。 类的定义 类是用户自定义的类型,如果程原创 2017-06-25 16:21:39 · 1259 阅读 · 0 评论 -
菱形继承->菱形虚拟继承(继承系列问题)
//待解决:如何在类外访问类的私有成员(友元函数和offsetof) //如何在一个类外访问另外一个类的私有成员 //用C语言模拟实现继承继承(继承权限public->protected->private)继承是面向对象复用的重要手段,通过继承定义一个类,继承是关系类型之间的建模, 共享共有的东西,实现各自本质不同的东西。在继承关系当中,派生类继承父类的成员由此达到复用手段。public继承是一原创 2017-07-21 17:41:18 · 2843 阅读 · 2 评论