自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

中年人

张爱玲说:‘’ 人到中年时常会感到孤独。

  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 第67课 经典问题解析五

1、指针的判别    1.1、拾遗        1.1.1、C++中仍然支持C语言中的可变参数函数        1.1.2、C++编译器的匹配调用优先级:重载函数>函数模板>变参函数    1.2、思路        1.2.1、将变量分为两类:指针 VS 非指针        1.2.2、编写函数:                指针变量调用时回true  

2018-01-30 19:33:53 140

原创 第68课 拾遗:让人迷惑的写法

1、typename的前世今生    1.1、定义模板时使用class的历史原因        1.1.1、早期的C++直接复用class关键字来定义模板        1.1.2、但是泛型编程针对的不只是类类型        1.1.3、class关键字的复用使得代码出现二义性    1.2、typename诞生的直接诱因        1.2.1、自定义类类型内部的嵌套

2018-01-30 19:30:49 194

原创 第66课 C++中的类型识别

1、类型识别    1.1、在面向对象中可能出现下面的情况        1.1.2、基类指针指向子类对象        1.1.3、基类引用成为子类对象的别名                            ▲静态类型——变量(对象)自身的类型(定义变量类型时类型或参数类型)    ▲动态类型——指针(引用)所指向的对象的实际类型    1.2、基类指针转子类指

2018-01-30 11:02:57 141

原创 第65课 C++中的异常处理(下)

1、C++中的异常处理    1.1、catch语句块可以抛出异常        1.1.1、catch中获捕的异常可以被重新抛出        1.1.2、抛出的异常需要外层的try-catch块来捕获        1.1.3、catch(…)块中抛异常的方法是throw;也是将所有异常重新抛出                    1.2、catch块中重新抛异常的意

2018-01-30 09:31:01 271

原创 第64课 C++中的异常处理(上)

1、C++内置的异常处理:try-catch    1.1、try语句处理正常代码逻辑    1.2、catch语句处理异常情况    1.3、try语句中的异常由对应的catch语句处理,如果对应的catch中没有处理该异常,会自动继续沿函数调用栈向上被抛出。2、C++通过throw语句抛出异常情况double divide(double a, dou

2018-01-29 15:18:28 146

原创 第63课 C语言异常处理

1、异常的概念    1.1、程序在运行过程中可能产生异常    1.2、异常(Exception)与Bug的区别        1.2.1、异常是程序运行时可预料的执行分支        1.2.2、Bug是程序是的错误,是不被预期的运行方式2、异常和Bug的对比    2.1、异常:如运行时产生除0的情况、需要打开的外部文件不存在、数组访问时越界    2.

2018-01-29 14:35:32 269

原创 第62课 单例类模板

1、单例需求的提出    1.1、在架构设计时,某些类在整个系统生命期中最多只能有一个对象存在(Single Instance)    1.2、问题:如何定义一个类,使得这个类最多只能创建一个对象C++中解决方案:1、将构造函数,拷贝构造函数,赋值操作符设置为private的。2、创建一个private的该类的static指针,并且创建一个获得目标类指针的static方法(

2018-01-29 11:10:31 266

原创 第61课 智能指针类模板

1、智能指针的意义    1.1、现代C++开发库中最重要的类模板之一    1.2、C++中自动内存管理的主要手段    1.3、能够在很大程度上避开内存相关的问题(如内存泄漏、内存的多次释放等)2、STL中的智能指针    2.1、auto_ptr智能指针        2.1.1、生命周期结束时,销毁指向的内存空间        2.1.2、只能用来管理单

2018-01-28 16:12:00 197

原创 第60课 数组类模板

1、预备知识    1.1、模板参数可以是数值型参数(非类型参数)        template        void  func()        {            T  a  [N];    //使用模板参数定义局部数组        }        //    函数调用时:func();        1.2、数值型模板参数的限制  

2018-01-27 18:05:33 174

原创 第59课 类模板的深度剖析

1、多参数的类模板    1.1、类模板可以定义任意多个不同的类型参数    1.2、类模板可以被特化        1.2.1、为指定类模板的特定实现,即特化是一个类模板其参数特殊情况时的分开实现。        1.2.2、部分类型参数必须显式指定。如class         1.2.3、根据类型参数分开实现类模板    1.3、类模板的特化类型        1

2018-01-26 08:58:11 175

原创 第58课 类模板的概念和意义

1、类模板    1.1、一些类主要用于存储和组织数据元素    1.2、类中数据组织的方式和数据元素的具体类型无关。如数组类、链表类、Stack类、Queue类等。    1.3、C++中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需要实现的功能。2、C++中的类模板    2.1、以相同的方式处理不同的类型    2.2、在类声明

2018-01-25 16:20:02 159

原创 第57课 深入理解函数模板

1、函数模板深入理解    1.1、编译器从函数模板通过具体类型产生不同的函数    1.2、编译器会对函数模板进行两次编译        1.2.1、对模板代码本身进行编译        1.2.2、对参数替换后的代码进行编译(编译时机:可能发生在定义对象或函数调用时)    1.3、注意事项        1.3.1、函数模板本身不允许隐式类型转换        1

2018-01-25 14:35:42 142

原创 第56课 函数模板的概念和意义

1、发散性问题:C++中的几种交换变量的方法。    1.1、宏代码块 VS 函数/**************           变量的交换        *************/#include #include using namespace std;//宏定义代码块#define SWAP(t, a, b)\do              

2018-01-25 10:32:20 169

原创 第55课 经典问题解析四

1、关于动态内存分配    1.1、new和malloc的区别                1.2、delete/free的区别            /********************       new和malloc的区别      ****************/#include #include #include   //fo

2018-01-24 09:29:59 321

原创 第54课 被遗弃的多重继承(下)

1、C++中的多重继承    1.1、一个子类可以拥有多个父类    1.2、子类拥有所有父类的成员变量    1.3、子类继承所有父类的成员函数    1.4、子类对象可以当作任意父类对象使用(父子类有赋值兼容性原则)    1.5、多重继承的语法规则class Derived: public BaseA, public BaseB, public BaseC{…};

2018-01-23 13:59:34 250

原创 第52课 C++中的抽象类和接口

1、什么是抽象类    1.1、面向对象中的抽象概念                    1.2、现实中:需要知道具体的图形类型,才能求面积。    1.3、Shape只是一个概念上的类型,没有具体对象2、面向对象中的抽象类    2.1、可用于表示现实世界中的抽象概念    2.2、是一种只能定义类型,而不能产生对象的类    2.3、只能被继承并重写相

2018-01-22 11:01:08 152

原创 第51课 C++对象模型分析(下)

1、单继承对象模型   1.1、单一继承    在C++编译器的内部类可以理解为结构体    子类是由父类成员叠加子类新成员得到的。    class  Derived : public  Demo    {            int  mk;    };                 /******************

2018-01-22 10:29:12 237

原创 第50课 C++对象模型分析(上)

1、回归本质    1.1、class是一种特殊的结构体        1.1.1、在内存中class依旧可以看作变量的集合        1.1.2、class与struct遵循相同的内存对齐规则        1.1.3、class中的成员函数与成员变量是分开存放的。即每个对象有独立的成员变量,但所有对象共享类中的成员函数。/**************

2018-01-21 14:31:47 145

原创 第49课 多态的概念和意义

1、函数重写回顾    1.1、父类中被重写的函数依然会继承给子类    1.2、子类中重写的函数将覆盖父类中的函数    1.3、通过作用域分辨符(::)可以访问到父类中的函数Child  c;Parent*  p  =  &c;c.Parent::print();        //从父类中继承c.print()           

2018-01-21 08:29:31 172

原创 第48课 同名覆盖引发的问题

1、父子间的赋值兼容(子类对象可以当作父类对象使用)    1.1、子类对象可以直接赋值给父类对象    1.2、子类对象可以直接初始化父类对象    1.3、父类指针可以直接指向子类对象(应该只能使用里面相同的成员吧?)    1.4、父类引用可以直接引用子类对象/*********************    子类对象的兼容性      ********/

2018-01-20 16:09:17 141

原创 第47课 父子间的冲突

1、父子间的冲突    1.1、子类可以定义父类中的同名成员    1.2、子类中的成员将隐藏父类中的同名成员(同名覆盖)    1.3、父类中的同名成员依然存在于子类中    1.4、通过作用域分辨符(::)访问父类中的同名成员/****************           父子间的函数重载 及同名成员变量     ************/#incl

2018-01-20 14:33:21 165

原创 第46课 继承中的构造与析构

1、子类对象的构造    1.1、子类中可以定义构造函数    1.2、子类构造函数,必须对继承而来的成员进行初始化,有两种方式        1.2.1、直接通过初始化列表进行初始化或赋值的方式进行初始化        1.2.2、调用父类构造函数进行初始化     1.3、父类构造函数在子类中调用方式        1.3.1、默认调用:适用于无参构造函数和使用默认

2018-01-20 14:01:49 151

原创 第45课 不同的继承方式

1、C++中3种不同的继承方式    1.1、public继承:父类成员在子类中保持原有访问级别    1.2、private继承:父类成员在子类中变为私有成员    1.3、protected继承:父类中的公有成员变为保护成员(只有子类可以访问,父类不能访问),其它成员保持不变。                1.3.1、继承成员的访问属性 =Max{继承方式,

2018-01-20 10:28:18 167

原创 第44课 继承中的访问级别

1、值得思考的问题    1.1、根据面向对象的理论:子类拥有父类的一切属性和行为,子类能够直接访问父类的私有成员!    1.2、但C++语法规定,外界不能直接访问类的private成员,所以子类也不能直接访问父类的私有成员!2、继承中的访问级别    2.1、面向对象中的访问级别不只是public和private    2.2、可以定义protected访问级别

2018-01-20 09:36:08 144

原创 第43课 继承的概念及意义

1、类之间的组合关系    1.1、组合关系:整体与部分的关系                                补充:1、使用组合(has - a)可以用到另一个类中私有的变量和方法,而继承就不可以用到父类的私有的变量和方法了 。2、特别是需要使用到多个类中的东西的时候可以用组合来代替继承(is -a )。3、继承是说:我父亲在家里给我帮了很大的忙。  而组合是说:我请了个老头在我家

2018-01-19 15:16:24 197

原创 第42课 类型转换函数

1、类型转换函数    1.1、C++类中可以定义类型转换函数    1.2、类型转换函数用于将类对象转换为其它类型    1.3、语法规则:        operator  Type()        {                 Type ret;                                  //..............              return

2018-01-19 14:08:56 180

原创 第41课 转换构造函数

1、 再论类型转换    1.1、标准数据类型之间会进行隐式的类型安全转换    1.2、转换规则如下:        /*************有趣的隐式类型转换*************/#include using namespace std;//使用这个默认命名空间int main(){    short s = 'a';  //char形式的a隐式类型转换为short。    unsi

2018-01-19 11:16:33 293

原创 第40课 前置操作符和后置操作符

1、++i和i++真的有区别吗?    1.1、现代编译器会对代码进行优化。对于基础类型,前置++和后置++的汇编代码几乎是一样的,最终效率完全一样。    1.2、优化使得最终的二进制程序更加高效    1.3、优化后的二进制程序丢失了C/C++的原生语义。    1.4、不可能从编译后的二进制程序还原C/C++程序。(反汇编不能还原!)int i = 0;013612FB  mov      

2018-01-19 08:38:22 272

原创 第39课 逗号操作符的分析

1、逗号操作符    1.1、逗号表达式用于将多个子表达式连接为一个表达式    1.2、逗号表达式的值为最后一个子表达式的值    1.3、逗号表达式的前N-1个子表达式可以没有返回值    1.4、逗号表达式按照从左向右的顺序 ->计算每个子表达式的值exp1,exp2,exp3,…,expN;    /******************* 逗号表达式的示例 ****************

2018-01-18 19:22:35 236

原创 第38课 逻辑操作符的陷阱

1、逻辑运算符的原生语义(又叫短路运算符)    1.1、操作数只有两种值(true和false)    1.2、逻辑表达式不用完全计算就能确定最终值    1.3、最终结果只能是true或false    /***************      逻辑表达式(又叫短路表达式)     *************/#include using namespac

2018-01-17 15:39:29 153

原创 第37课 智能指针分析

1、永恒的话题:内存泄漏    1.1、动态申请堆空间,用完后不归还    1.2、C++语言中没有垃圾回收的机制    1.3、指针无法控制所指堆空间的生命周期/******************       内存泄露示例    **************/#include using namespace std;class Test{    

2018-01-17 14:15:38 200

原创 第36课 经典问题解析三

1、关于赋值的疑问    1.1、疑问        1.1.1、编译器为每个类默认重载了赋值操作符        1.1.2、默认的赋值操作符仅完成浅拷贝        1.1.3、当需要进行深拷贝时必须重载赋值操作符        1.1.4、赋值操作符与拷贝构造函数有相同的存在意义/**************** 默认赋值操作符重载 ********

2018-01-17 08:59:41 187

原创 第35课 函数对象分析

1、.为什么需要函数对象    1.1、案例        1.1.1、编写一个函数,使函数可以获得斐波那契数列每项的值。        1.1.2、每调用一次返回一个值        1.1.3、函数可根据需要重复使用#include using namespace std;    //头文件在这个命名空间里int fib(){    stat

2018-01-15 15:39:06 150

原创 第34课 数组操作符的重载

1、字符串类的兼容性    1.1、string类最大限度的考虑了C字符串的兼容性    1.2、可以按照使用C字符串的方式使用string对象,如    string  s  = "abcdefg" ;    char  c  = s[i];/********************          用C方式使用string类      ************

2018-01-15 14:04:03 202

原创 第33课 C++中的字符串

1、历史遗留问题及解决方案    1.1、历史遗留问题        1.1.1、C语言不支持真正意义上的字符串        1.1.2、C语言用字符数组和一组函数实现字符串操作        1.1.3、C语言不支持自定义类型,因此无法获得字符串类型    1.2、解决方案        1.2.1、从C到C++的进化过程引入了自定义类型        1.2.2、

2018-01-14 15:54:22 264

原创 第32课 初探C++标准库

1、有趣的重载    1.1、操作符可将变量或常量左移到对象中!                            (//返回的是引用。这里返回的引用是什么意思呢?)    答:相当于返回调用这个函数的对象,这个引用相当于一个对象的别名(但不是对象的本身。)/***************   重载左移操作符(仿cout)  ******************/#in

2018-01-13 10:34:03 195

原创 第31课 完善的复数类

1、复数类 应具有的操作    1.1、运算:+、-、*、/        1.2、比较:==、!=    1.3、赋值:=        1.4、求模:modulus2、 利用操作符重载    2.1、统一复数与实数的运算方式Complexoperator + (const Complex& c);//因为对象的this关键字的缘故,省去一个参数

2018-01-13 08:48:54 272

原创 第30课 操作符重载的概念

1、操作符重载    1.1、C++中的重载能够扩展操作符的功能    1.2、操作符的重载以函数的方式进行,本质上是用特殊形式的函数扩展操作符的功能    1.3、通过operator关键字可以定义特殊函数,operator的本质是通过函数来重载操作符    1.4、语法:TypeoperatorSign(const Type& p1, const Type& p2);/

2018-01-12 21:58:35 505

原创 第29课 类中的函数重载

1、函数重载的回顾    1.1、函数重载的本质为互相独立的不同函数。    1.2、C++中通过函数名和函数参数确定函数调用,函数名和参数列表组成唯一的标识。    1.3、无法直接通过函数名得到重载函数的入口地址。    1.4、函数重载必然发生在同一个作用域中。/*********  类成员函数指针(类成员函数的函数指针) *******/#include

2018-01-12 15:32:16 222

JSP+Servlet+MySql+Redis的网上商城项目.rar

下面只列出了功能大纲;具体的实现请参照压缩包中的xmind文件。 注册 登录 热门商品 最新商品 类别菜单(使用Redis做缓存) 商品详情页 浏览记录实现 抽取BaseServlet 购物车的实现 我的订单 第三方支付功能 使用工厂模式+反射+配置文件的方式来解耦(解Web层和Service层的耦合)

2019-10-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除