
C++
文章平均质量分 66
C++
cj5785
知其然,更要知其所以然
展开
-
C++学习笔记-namespace
指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中 关于iostream <iostream>和<iostream.h>格式不一样,前者没有后缀,实际上,这是由于第一版c++编译器的不成熟造成的,后来取消了.h的后缀格式,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。 当使用<iostr...原创 2019-04-03 20:57:33 · 1261 阅读 · 0 评论 -
C++学习笔记-继承
类之间可以建立联系,这就使得类可以有某种关系 类之间的关系 has-A:包含关系,一个类使用另一个已经定义好的类的数据 uses-A:使用关系,友元或者对象参数传递 is-A:是的关系,这就是继承,具有传递性不具有对称性 继承是类之间定义的一种重要关系,一个B类继承A类,或称从类A派生类B,类A称为基类(父类),类B称为派生类(子类) 基类和派生类 类继承关系的语法形式 class 派生类名:基类...原创 2019-04-03 21:00:29 · 1451 阅读 · 0 评论 -
C++学习笔记-继承中的构造与析构
C++存在构造函数与析构函数,继承中也存在构造和析构函数。继承中的构造和析构函数与普通的构造析构有细微差别。 赋值兼容性原则 #include "iostream" using namespace std; class Parent { public: void printP() { printf("父类\n"); } protected: int a; int b; }; cl...原创 2019-04-03 21:00:43 · 1354 阅读 · 0 评论 -
C++学习笔记-多态
多态作为面向对象的重要概念,在如何一门面向对象编程语言中都有着举足轻重的作用,学习多态,有助于更好地理多态的行为 多态性(Polymorphism)是指一个名字,多种语义;或界面相同,多种实现。 重载函数是多态性的一种简单形式。 虚函数允许函数调用与函数体的联系在运行时才进行,称为动态联编 静态联编 联编是指一个程序模块、代码之间互相关联的过程 静态联编,是程序的匹配、连接在编译阶段实现,也称为早...原创 2019-04-03 21:00:56 · 1451 阅读 · 0 评论 -
C++学习笔记-多态的实现原理
深入了解多态的实现原理,有助于提高对于多态的认识 多态基础 多态的实现效果 多态:同样的调用语句有多种不同的表现形态 多态实现的三个条件 有继承、有virtual重写、有父类指针(引用)指向子类对象 多态的C++实现 virtual关键字,告诉编译器这个函数要支持多态;不要根据指针类型判断如何调用;而是要根据指针所指向的实际对象类型来判断如何调用 多态的理论基础 动态联编PK静态联编。根据实际的对...原创 2019-04-03 21:01:09 · 1271 阅读 · 0 评论 -
C++学习笔记-模板
模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属。模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。 什么是模板 类属——类型参数化,又称参数模板 使得程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递 C++提供两种模板机制: 函数模板 类模板 函数模板 考虑求两参数之中大值函数:max(a , b) 对 a, b 的不同类型...原创 2019-04-03 21:01:25 · 1412 阅读 · 0 评论 -
C++学习笔记-STL
C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), lists(链表), 和 stacks(栈)等 导入 抽象的重要性 计算机科学的重要进步,许多是由于发掘了新的抽象性质而促成的 面向过程 -> 基于对象 -> 面向对象 -> 泛型 面向过程(Procedu...原创 2019-04-03 21:01:39 · 1728 阅读 · 0 评论 -
C++学习笔记-异常处理
程序设计的要求之一就是程序的健壮性。希望程序在运行时能够不出或者少出问题。但是,在程序的实际运行时,总会有一些因素会导致程序不能正常运行。异常处理(Exception Handling)就是要提出或者是研究一种机制,能够较好的处理程序不能正常运行的问题 异常和异常处理 异常及其特点 异常(Exceptions)是程序在运行时可能出现的会导致程序运行终止的错误 编译系统检查出来的语法错误,导致程序...原创 2019-04-03 21:01:51 · 1444 阅读 · 0 评论 -
C++学习笔记-C++与C语言的一些区别
本文主要是整理一些C++与C的一些小的区别,也就是在使用C与C++时候需要注意的一些问题,C++是以C语言为基础的,并且完全兼容C语言的特性 注释 C语言的注释形式为 /* 注释内容 */ 而C++提供了另一种新的注释方式 //注释内容 但在C的发展过程中,慢慢接受了C++的注释方式,在C语言中也可以采用C++的注释方式了 变量的声明及初始化 在C语言中,局部变量的声明和初始化是分开的 int...原创 2019-04-03 14:51:18 · 1498 阅读 · 2 评论 -
C++学习笔记-封装
封装 所谓封装就是将某些东西包装盒隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是通过外部接口以及特定的访问权限来使用类的成员。 类通常分为以下两个部分 类的实现细节 类的使用方式 封装的基本概念 一些类的属性是对外公开的 一些类的属性是需要保密的 因此,需要在类的表示法中定义属性和行为的公开级别,类似文件...原创 2019-04-03 21:00:13 · 1218 阅读 · 0 评论 -
C++学习笔记-运算符重载
运算符重载使得用户自定义的数据以一种更简洁的方式工作 运算符重载规则 重载运算符的限制 可以重载的运算符 +-*/%^&|~!=<>+=-=*=/=%=^=&=|=<<>>>>=<<===!=<=>=&&||++--->*' ->[]()newdeletenew[]delete[] ...原创 2019-04-03 20:59:59 · 1419 阅读 · 0 评论 -
C++学习笔记-const
const在C++中有着大量的运用,深刻理解const有助于进一步理解C++。 const基础知识 int main() { const int a;//C++中必须初始化 int const b;//C++中必须初始化 const int *c; int * const d; const int * const e ; return 0; } ...原创 2019-04-03 20:57:56 · 1389 阅读 · 0 评论 -
C++学习笔记-引用
引用是C语言中没有,而在C++中又很重要的一个概念,通过应用,可以得到变量本身,相对于得到变量的值而言,有更大的操作空间。 普通引用 变量的本质 变量名实质上是一段连续存储空间的别名,是一个标号 程序中通过变量来申请并命名内存空间 通过变量的名字可以使用存储空间 引用是C++的概念,属于C++编译器对C的扩展 int main() { int a = 0; int &b =...原创 2019-04-03 20:58:17 · 1287 阅读 · 0 评论 -
C++学习笔记-C++对C语言的函数拓展
内联函数 内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质 inline关键字只是给编译器一个建议,编译器不一定会接受这种建议。一些编译器,会将简单的函数做内联编译,即使它没有用inline关键字声明 C++编译器直接将函数体插入函数调用的地方 内联函数没有普通函数调用时的额外开销(压栈,跳转,返回) ...原创 2019-04-03 20:58:39 · 1312 阅读 · 0 评论 -
C++学习笔记-构造函数和析构函数
构造函数和析构函数是C++的重要组成部分,了解构造函数和析构函数有助于深入了解C++ 构造函数 构造函数产生的原因 在C++中,有时候需要在对象创建的时候初始化数据,如果采用普通函数的话,每次初始化都要调用函数,显得麻烦,另外,如果忘记初始化,那么其结果是未知的。 在C++中使用构造函数来完成初始化,使得对象在生成的时候就完成初始化动作 构造函数定义 C++中的类可以定义与类名相同的特殊成员函数...原创 2019-04-03 20:58:54 · 1622 阅读 · 0 评论 -
C++之用程序理解浅拷贝
C++中的浅拷贝是产生很多问题的根本原因,其根本原因是在有指针的时候,只是拷贝了一个指针的值,多个指针指向同一块内存区域,当free内存时,造成其他指针指向的空间不存在。结合构造函数和析构函数理解浅拷贝是一个不错的选择 原始程序 #include "iostream" using namespace std; class Name { public: Name(const char *pnam...原创 2019-04-03 20:59:09 · 1174 阅读 · 0 评论 -
C++学习笔记-new与delete
C++新增了new和delete关键字,用来开辟内存,对应的就是C语言的malloc和free 对比new/delete和malloc/free malloc和free是库函数,以字节为单位申请堆内存 new和delete是关键字,以类型为单位申请堆内存 malloc和free单纯的对内存进行申请与释放 对于基本类型new关键字会对内存进行初始化 对于类类型new和delete还负责构造函数和析构...原创 2019-04-03 20:59:24 · 1318 阅读 · 0 评论 -
C++学习笔记-static
static做为关键字,在C++语言中运用在类中,代表着这个属性或者方法属于这个类 如果生成的对象修改了这个成员,那么其他对象共享修改后的值 定义和初始化 class ABC { public: int getC() { return c; } void setC(int _c) { c = _c; } static void getMem() { cout &l...原创 2019-04-03 20:59:37 · 1236 阅读 · 0 评论 -
C++学习笔记-面向对象模型探究
C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类。从计算机的角度,程序依然由数据段和代码段构成。那么C++编译器如何完成面向对象理论到计算机程序的转化的呢? 换句话说,C++编译器是如何管理类、对象、类和对象之间的关系?也就是说,具体对象调用类写的方法,那,c++编译器是如何区分,是那个具体的类,调用这个方法的? #include "ios...原创 2019-04-03 20:59:48 · 1315 阅读 · 0 评论 -
C++学习笔记-C++对C语言的扩充和增强
C++兼容C,在C的基础上学习C++是一个不错的选择,也能够更好的了解C与C++的区别与联系。 变量定义 C语言中的变量都必须在作用域开始的位置定义 C++中更强调语言的实用性,所有的变量都可以在需要使用时再定义 int main() { int i = 0; printf("test"); int j; system("pause"); return 0; } register 请求...原创 2019-04-03 20:57:00 · 1458 阅读 · 0 评论