C++
文章平均质量分 85
CZF_csdn
记录自己的成长,战胜自己。
展开
-
C++实现日期类
Date(日期)类:练习实现类的成员函数。运算符的重载Date.h#include class Date{ //成员函数public: Date(){} Date(int year, int month, int day); //全缺省构造函数 Date(const Date& d); //拷贝构造 Date& operator=(const Date& d);原创 2018-03-24 23:34:42 · 170 阅读 · 0 评论 -
C++继承概念梳理
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。类的成员具有三种访问限定符:public protect(保护) private 基(父)类和派生(子)类之间继承关系也是三种: public protect private说明:...原创 2018-04-21 17:27:07 · 301 阅读 · 0 评论 -
虚函数和多态
知识储备:重提切片行为:1.子类对象赋值给父类对象2.父类型的指针指向了子类对象3.父类型的引用引用子类的对象虚函数:类的成员函数前面加virtual关键字,则这个成员函数称为虚函数虚函数重写:当在子类的定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写(也称覆盖)了父类的这个虚函数构成多态需要满足的条件:1.函数的形参是父类的指针或者引用2.调用的...原创 2018-04-25 21:59:38 · 190 阅读 · 0 评论 -
虚表和虚基表的对象模型
继承这一块被虚表和虚基表弄的特别晕,专开一篇来研究研究:首先:虚表和虚基表无关系!!!虚函数:虚函数是在类的非静态成员函数前加virtual,则这个成员函数成为虚函数(并不是所有的成员函数能够定义为虚函数,如构造函数等),在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,实现多态性。虚表(虚函数表):C++中的虚函数的实现一般是通过虚函数表(Virtual Table)...原创 2018-04-26 11:23:15 · 691 阅读 · 4 评论 -
string和vector的基本接口函数
简单的介绍string和vector 一些基本的函数的含义原创 2018-05-25 17:03:59 · 980 阅读 · 0 评论 -
模板总结
模板的使用是为了适应泛型编程原创 2018-05-26 16:26:05 · 193 阅读 · 0 评论 -
C++模板封装Vector和带头结点的双向链表
C++模板封装Vector:注意:1.在Vector的拷贝构造,扩容函数中,需要注意string的影响#pragma once #include <iostream>#include <assert.h>#include <string.h>#include <string>using namespace std;template&...原创 2018-05-28 16:44:30 · 501 阅读 · 0 评论 -
模板类的特化和类型萃取
模板类的特化:原创 2018-05-28 17:22:15 · 511 阅读 · 0 评论 -
C++的异常机制
在学习C语言时我们的程序出错的处理方式基本都是以下几种:1.终止程序 (除数为0)2.返回一个表示错误的值,附加错误码(errno)3.返回一个合法的值,让程序处于一种非法的状态(atoi())4.调用预先准备好的错误处理函数 (回调函数)5.直接终止程序: abort 或者 exit().6.setjmp() 和 longjmp() 函数组合。C语言的常见处理方式之一:输...原创 2018-05-29 10:46:20 · 711 阅读 · 0 评论 -
C++类的六个默认成员函数
【this指针】:1.每个成员函数都有一个指针形参,它的名字是固定的,成为this指针,this指针是隐式的,(构造函数比较特殊,没有这个隐含this形参)。2.类型: 类类型* const3.this指针并不是对象本身的一部分,不影响sizeof的结果4.this指针是”类成员函数”的第一个默认隐含参数,编译器自动维护传递,类编写者不能显式传递5.只有在类的非静态成员函数中才可以使用this指针...原创 2018-03-24 21:54:49 · 264 阅读 · 0 评论 -
实现一个不能被继承的类
在掌握了基本的继承关系时,为了加深理解和延伸知识,可以实现以下几个特殊的类:1.实现一个不能被继承的类:2.实现一个只能在栈上创建对象的类3.实现一个只能在堆上创建对象的类原创 2018-05-01 09:56:17 · 353 阅读 · 0 评论 -
C++封装顺序表和带头结点的双向循环链表
啊原创 2018-04-19 10:27:41 · 341 阅读 · 0 评论 -
引用详解和指针
引用:引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。引用格式:引用特点:引用的原理:引用的原理:原创 2018-03-16 09:17:27 · 251 阅读 · 0 评论 -
C++初探
1:命名空间域------namespace2.函数重载3.全缺省参数缺省时只能从从右往左缺省,且必须连续!原创 2018-03-16 08:45:37 · 118 阅读 · 0 评论 -
string类的模拟之深浅拷贝
浅拷贝:浅拷贝只拷贝指针,但拷贝后两个指针指向同一个内存空间,或者可以说,原对象和拷贝对象共用一个实体,任何一个对象的改变都会引起另一个的改变。当类成员不包括指针何引用时,浅拷贝并无问题;但对于指针与引用成员,当对象的生命周期结束后,浅拷贝会造成同一块内存单元被释放两次,导致内存泄漏。深拷贝:不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针指向两个不同地址。调用拷贝构造函原创 2018-04-16 12:43:50 · 181 阅读 · 0 评论 -
C++中的new/delete与malloc/free
知识储备:内存泄漏:通俗的来说内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。常见的几种内存泄漏:void MemoryLeaks(){ // 1、内存申请了忘记释放 int *pTest = (int *)malloc(10*sizeof...原创 2018-04-03 14:03:33 · 217 阅读 · 0 评论 -
string类模拟之引用计数和写时拷贝
在 string类的模拟之深浅拷贝 中,我们可以看到,程序浅拷贝导致的崩溃,是因为多次释放内存引起的多次析构,那么我们可以添加一个计数器,这里称之为引用计数,来表示当前的空间有多少指针指向它,如果大于一的话,那么在调析构函数的时候,就只对引用计数减一,当减到只剩一的时候就可以安心的释放内存空间了。引用计数的本质就是一个整形变量,那么我们到底应该怎么给出引用计数的形式呢?1.整形成员变量(原创 2018-04-16 13:17:40 · 198 阅读 · 0 评论 -
类和对象
类和对象原创 2018-03-16 09:43:10 · 145 阅读 · 0 评论 -
内联函数和友元
内联函数 :以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈开销,内联函数提升程序运行的效率内联函数特征:1. inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的的函数不适宜使用内联。2. inline对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内有循环/递归等原创 2018-04-03 23:38:21 · 288 阅读 · 0 评论 -
C++中的类的const成员和static成员
const成员函数 :在成员函数后面加const,const修饰this指针所指向的对象,也就是保证调用这个const成员函数的对象在函数内不会被改变。class Date{public: Date(int year = 1900, int month = 1, int day = 1) :_year(year) , _month(month) , _day(day) {}...原创 2018-04-03 23:10:37 · 282 阅读 · 0 评论 -
C++智能指针
在C语言学习的时候,指针的功能虽然强大,但是也是十分危险,指针的释放和置空在C语言中十分重要,不正确的操作可能会导致内存泄露。那能否让程序自己去控制在不需要资源时自动将其归还给系统。RAII (Resource Acquisition IsInitialization) :定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放...原创 2018-06-07 16:58:00 · 151 阅读 · 0 评论