C++ Primer Plus
文章平均质量分 67
littesss
这个作者很懒,什么都没留下…
展开
-
malloc与new的区别
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于ma原创 2017-07-10 21:32:20 · 459 阅读 · 0 评论 -
模板template
模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类一、函数模板 模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数template 返回类型 函数名(形参表){//函数定义体 }说明: template是一个声明模板的关原创 2017-07-07 23:31:34 · 265 阅读 · 0 评论 -
string类的实现
string类的构造、析勾 、赋值、拷贝构造、输出运算符重载、加法重载、比较运算符重载、以及类型转换等,均在代码中实现,含详细注释#include#includeusing namespace std;#include#pragma warning(disable:4996)class String;ostream& operator<<(ostream &out,const S原创 2017-07-20 21:48:15 · 323 阅读 · 0 评论 -
多态的实现原理
一、虚表 在C++语言中,每个有虚函数的类或者虚继承的子类,编译器都会为它生成一个虚拟函数表(简称:虚表),表中的每一个元素都指向一个虚函数的地址。(注意:虚表是从属于类的)此外,编译器会为包含虚函数的类加上一个成员变量,是一个指向该虚函数表的指针(常被称为vptr),每一个由此类别派生出来的类,都有这么一个vptr。虚表指针是从属于对象的。也就是说,如果一个类含有虚表,则该类的所有对象原创 2017-07-17 21:58:25 · 431 阅读 · 0 评论 -
纯虚函数
一纯虚函数 纯虚函数值被表明为不具体实现的虚拟成员函数;它用于定义一个基类时,会遇到无法定义基类中虚函数的具体实现,其实现必须依赖与其不同的派生类。纯虚函数格式:virtuai 返回类型 函数名(参数列表) = 0 纯虚函数不能定义对象。纯虚函数没有实现部分,不能产生对象,可以定义一个指向基类的指针,所以纯虚函数的类是一个抽象类。纯虚函数相当于为派生类"占位置"原创 2017-07-18 08:58:24 · 516 阅读 · 0 评论 -
ios流类库体系及格式控制
C++没有输入/输出语句,在标准库里面包含了一个I/O流库。一、缓冲区什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。为什么要引入缓冲区我们为什么要引入缓冲区呢?比如我们从磁盘里取信息,我们先把读出的数据放原创 2017-07-18 16:21:33 · 1039 阅读 · 0 评论 -
深刻理解--->类的六大默认成员函数
一、类默认的六个函数1.构造函数:开辟空间,strcpy()函数,字符串拷贝,可以重载,不同的基本数据类型字符串指针类型的话,需要考虑为NULL的情况。2.析构函数:在不为空的情况下,释放字符串数组,然后赋空预防野指针。3.拷贝构造函数:对象给对象赋值,牵扯到资源分配(成员中含有指针),就必须重写深拷贝构造函数和赋值运算符的重载(避免浅拷贝:只是简单的拷贝一个指针指向,最后析勾对象的时原创 2017-07-20 21:31:58 · 1111 阅读 · 0 评论 -
C++类中static总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include void fn()原创 2017-08-12 20:53:42 · 630 阅读 · 0 评论 -
文件读写 iflie对象(读操作) / ofile对象(写操作)
一、文件分类(磁盘文件): 二进制文件和文本文件;文本文件就是由字符序列组成,也称作ASCII码文件,在文本文件中存取的最小信息单文为字符(Character),而二进制文件存取的最小信息单位为字节(Byte)二、文件写操作 把文本文件输出到文本文件,先要定义一个文本输出流对象oflie,对该文件来说是对该文件的操作就是写操作,必须先写到文件中,才能输出到其他文本文原创 2017-07-18 22:41:41 · 7235 阅读 · 0 评论 -
多态和虚函数的使用
一、虚函数: 在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数虚函数只能是一个类的成员函数,虚函数在类中实现必须加上关键字vritual,在类外实现不可加上virtual virtual 返回类型 函原创 2017-07-17 20:23:47 · 542 阅读 · 0 评论 -
static和const
一、static静态静态成员,静态成员方法静态方法没有this指针静态成员必须在类外进行初始化,因为它属于全局的变量,不属于那个成员,属于整个类共享 类名::数据静态成员方法不能访问非静态数据,只能访问静态数据 静态方法不能调动非静态方法,只能调动静态方法 二、const 常方法:要求不能改变类的成员 三、一般方法(普通方法)与常方法原创 2017-07-07 16:15:38 · 208 阅读 · 0 评论 -
友元函数 friend
一、一个类的成员函数有三个互不相干作用 1.可以通过类的成员方法,访问它的私有数据。2.该函数的作用域在类中。3.在外部调动该函数必须通过成员访问符访问,也就是必须经由一个对象去激活(有一个this指针)。二、友元函数 1.友元函数作用域不属于类的作用域,不是类的成员,也就不是类的方法,不受公有、私有、保护限制。2.友元函数可以在类中实现,也可以在类外实现(一般是在类的原创 2017-07-06 15:09:24 · 2722 阅读 · 0 评论 -
回型数组
#includeusing namespace std;#define Max_Size 100//定义一个最大100*100的二维数组int arr[Max_Size][Max_Size];int main(){ int n; cout << "请输入几行几列数组:"; cin >> n; int i = 0, j = 0; int index = 1; while (i原创 2017-07-06 15:33:17 · 881 阅读 · 0 评论 -
c++特点
一.类、对象、实例化对象 1.类class student 其中student类名 class是一种数据类型叫类类型,而student是类类型的一个实例,类类型就是描述多种数据类型的一个类。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象2.对象c++是面向对象的一种编程语言,而这个对象是什么呢? 对象的概念是面向对象技术的核心所在,面向对象技术中的对原创 2017-07-01 15:39:04 · 903 阅读 · 0 评论 -
C++与C的区别
一、什么是C++C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。二、c与c++的区别1.原文件 c ***.c c++ ***.cpp2.标准输入输出头文件c stdio.h c++ 一般不带h(也可带.h,c原创 2017-07-01 15:03:04 · 552 阅读 · 0 评论 -
继承属性
一、继承: 类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。 继承的格式 class 子类名 : 继承属性(公有,保护,私有) 父类名称 子类继承的父类除构造函数析勾函数的所有。默认是私有继承二、继承属性 公有继承 class D : publ原创 2017-07-11 19:19:51 · 4277 阅读 · 0 评论 -
构造函数与析构函数
一、构造函数 在类中数据成员一般 多为私有数据成员,要对他们进行初始化,必须要用一个公有函数来进行,并且这个函数在类中仅且只能被调动一次(构造一个对象时),称为构造函数。 对私有数据访问,必须通过公有方法 构造函数特点:1.与类名一致2. 函数无返回值,是没有返回值并不是void,即什么都不能写,也不可写void,时间是构造函数是有返回值的,返回的就是构造函数所创建的对原创 2017-07-03 11:00:08 · 529 阅读 · 0 评论 -
拷贝构造函数、赋值语句
一、拷贝构造函数函数 对象初始化对象的时候调动拷贝赋值语句 1.隐式转化 2.整形给对象赋值,就要看通过整形值是否可以构造出一个临时对象,如果可以构造出对象,我们把这个对象成为无名临时对象,无名临时对象通过调动构造函数,构造对象,对象给对象赋值,实际是对象的数据成员给对象的数据成员赋值3.引用:不会创建新的变量,只是给已经定义的变量起一个别名(引用的本质还是指针),基本数据类原创 2017-07-03 20:51:00 · 532 阅读 · 0 评论 -
函数的调度与优化
一、调动默认函数 二、优化函数返回值 直接return 无名对象,系统不会再去创建无名临时对象,系统认为函数内部的这个无名对象,就是即将给函数返回的无名临时对象,程序效率提高。 三、函数参数引用传递 函数参数已引用传递,就不会为其创建新的对象,所引用的对象,是原来构造出的对象 四、函数值以引用返回 函数值以引用返回的话,如果返回的值受函数的作原创 2017-07-04 10:48:43 · 753 阅读 · 0 评论 -
浅拷贝、深拷贝、浅赋值、深赋值
一、浅拷贝 对象初始化对象的时候调动拷贝构造函数,只是拷贝指针指向的拷贝构造称为浅拷贝。 当要析勾的时候对象被一一析勾的时候,第二个析勾的对象就找不到需要释放的空间,程序报错。由于默认的拷贝构造函数不能完成真实空间的拷贝,所以必须手动编写一个默认的拷贝构造函数。 二、深拷贝 对象初始化对象的时候调动拷贝构造函数,真实开辟空间拷贝数据的拷贝构造称原创 2017-07-04 16:51:34 · 3523 阅读 · 0 评论 -
钻石继承、虚基类、赋值兼容规则
一、二义性 一个类继承了多个父类,父类中有相同的成员,当构造对象的时候,父类中的成员如果名字相同就会造成二义性,所以为了避免二义性就需要在构造派生类对象时候就要给定来自那个父类(使用作用域访问符::) 二、虚基类 当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类原创 2017-07-13 21:06:22 · 448 阅读 · 0 评论 -
运算符的重载 operator
一、运算符的重载运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型在复杂数据类型中,编译器不能识别运算符,如c++中,对象+对象,编译器无法知道怎么运算,所以就需要编写函数,实现相应功能。不能重载的 运算符五个: ?: . .* :: szieof 二 自增运算符重载的实现 a++ ++a;1原创 2017-07-05 18:39:40 · 656 阅读 · 0 评论 -
singleton懒汉式与饿汉式以及线程安全(双检锁)
/************************************************************************* > File Name: Singleton.cpp > Created Time: Tue 31 Oct 2017 10:20:58 PM CST ***********************************************原创 2017-10-31 23:29:41 · 696 阅读 · 0 评论