
C++学习
文章平均质量分 90
bjtuwayne
这个作者很懒,什么都没留下…
展开
-
C++学习笔记(0)——写在前面
我不是计算机系和软件系毕业的程序员,但认真算起来,用C++写代码迄今已近5年了。非科班出生的感受就像是在社会大学中成长的人一样,很多情况都是经验式知识,所谓知其然不知其所以然。缺乏理论体系基础所暴露的问题不仅仅体现在专业交流上(包括面试,专业考试等等),还更深刻的体现在阅读代码能力和代码开发的质量上。这段时间在考虑人生第一次跳槽的问题,让自己突然感觉必须要认真充电了。于是我决定每天花至少一小时时间...原创 2018-09-23 11:19:39 · 397 阅读 · 2 评论 -
C++学习笔记(13)——类的类型转换
C++的某些类型之间可以进行转换,如int转double,double转int等等。而我们自定义的类(作为类型来看)也是可以进行转换的。本篇笔记将总结C++类的类型转换问题。一、类型转换可以将类定义成与基本类型或另一个类相关,使得从一种类型转换为另一种类型是有意义的。在这种情况下,程序员可以指示C++如何自动进行转换,或通过强制类型转换来完成。首先举个栗子:设计一个表达时间的类,在某些...原创 2018-12-06 21:00:13 · 429 阅读 · 0 评论 -
C++学习笔记(16)——类的继承(续)
在《类的继承》中详细总结了类的公有继承的相关知识,在大多数的工程中,这种继承都可以满足编程需求,或者说,这是我们常见的继承方式。实际上,除了这种常见的类的公有继承,类还有其他继承方式:私有继承,保护继承,多重继承等。本篇笔记将继续总结类的继承关系,但是本篇笔记的内容可能在实际编程中应用较少,但老生常谈的是为了见多不怪。一、私有继承类似于公有继承格式,私有继承即使用关键字private来表达...原创 2018-12-20 20:25:04 · 321 阅读 · 0 评论 -
C++学习笔记(15)——类的继承
面向对象编程的主要目的之一是提供可重用的代码。可重用意味着我们不希望修改之前写好的类,类的继承使得在不修改原有的类内容的基础上可以开发新的内容。同时,还可以在不提供类的具体实现方式的前提下完成这一工作,也是对知识产权的一种保护。本篇笔记将总结类的继承的相关知识点。同样,按照惯例,将在总结知识的过程中设计一个具有某种实际意义的类。一、从一个软件需求入手公司的人力资源处要求写一个员工信息管理的...原创 2018-12-15 16:48:59 · 350 阅读 · 0 评论 -
C++学习笔记(17)——简析类模板
在《函数探幽》一文中总结了函数模板的相关的知识。我们大概知道模板提供了泛型编程的便利,也即我们可以用通用的类型来定义表征一系列类型,比如函数的形参。对于类,我们也可以设计一种通用的类型的类来实现代码的重用。本文将总结类模板的相关知识。1.定义类模板与模板函数类似,模板类也要以下面的代码开头:template <class T>这与函数模板的功能一样,也即声明T为一种通用...原创 2019-01-05 16:41:23 · 165 阅读 · 0 评论 -
C++学习笔记(19)——异常
程序在编译阶段编译通过,但是可能在运行阶段遭遇错误。通常程序员会称之为运行时的程序崩溃。比如常见的用0作为除数,内存分配失败或内存访问失败等等。通常我们可以添加代码,例如用判断语句来避免这种运行阶段可能会出现的错误,并通过函数返回值的方式来告诉调用它的程序块,该函数执行失败。这也是C语言的通常做法。这样可以避免程序的崩溃问题。但是会有这样的问题出现:程序员可以检测出发生了运行时错误,但不知道怎...原创 2019-01-17 14:44:48 · 262 阅读 · 0 评论 -
C++学习笔记(18)——友元
在《设计类》一文中总结了友元函数的相关的知识。该篇笔记第四节总结到为了访问类的私有成员,可以将函数设置为类的友元函数。并同时提到C++中友元有三种,分别是友元函数,友元类,友元成员函数。本文将全面总结友元的相关知识。一、复习友元函数类的友元函数是将函数声明为类的友元,注意它并不是类的成员函数,不能用类的作用域解析符(::)去调用它。后面将会讲到的友元成员函数正是体现了这样的区别。类的友...原创 2019-01-15 14:45:39 · 230 阅读 · 0 评论 -
C++学习笔记(20)——再谈类型转换
在《C++学习笔记(13)——类的类型转换》一文中已经对类型转换做了总结,我们已经知道包括基本类型、自定义类在内的左右类型都可以互相转换,但转换需要某些前提条件才能完成。比如可以通过构造函数完成内置类型到类的转换,通过定义转换函数完成类向内置类型的转换。那么,类型转换发生在类与类之间会有什么发生?一、类的类型转换存在的问题如果两个根本没有任何关系的类根本没有转换的意义,但是从语法上讲,下述...原创 2019-01-26 15:36:28 · 233 阅读 · 0 评论 -
C++学习笔记(21)——string类
string是C++标准库中表示字符串的字符串类。在之前的笔记中也涉及到过string的应用,我们大概知道string与c风格字符串的区别在于前者不用操心字符串长度的问题,其内部会动态分配需要的内存。其实string 类是 STL(标准模板库)中 basic_string 模板实例化得到的模板类。其定义如下:typedef basic_string <char> string;...原创 2019-02-12 19:35:45 · 296 阅读 · 0 评论 -
C++学习笔记(22)——STL标准模板库
1前言本篇笔记开始总结C++标准中的一系列强大的库。STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISOC++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一...原创 2019-03-21 21:11:05 · 382 阅读 · 0 评论 -
C++学习笔记(23)——输入和输出
很无奈,再次险些败给了懒惰。C++学习笔记更新系列还差输入输出这一章,却拖了很久时间。这几天可能稍有空闲,就把这遗留的一章码出来吧。但是这仅仅是C++入门学习的笔记,它的博大精深值得继续深入探究学习。所以,这并不意味着结束。将来将继续总结和分享某些专题或是在工程中遇到的一些idea。一、输入输出我们经常用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上。从操...原创 2019-04-20 18:14:50 · 634 阅读 · 0 评论 -
C++学习笔记(12)——设计类
上篇笔记总结了C++类的基本结构和使用,并尝试着写了一个实现简单计算的类,但这个类仅仅是为了表明语法规则,并不能很好的体现类存在的意义。另外,类的设计也不会像上篇笔记那样死板和简单,它还有很多复杂的规则来是我们的设计变得方便(但不一定变得简单,很可能是变得复杂)。本篇笔记将总结一些类设计中的“新方法”,并同时设计一个“有意义”的类。一、设计一个矢量类这里,我首先提出一个软件开发需求。这个需...原创 2018-12-05 21:54:56 · 667 阅读 · 0 评论 -
C++学习笔记(14)——类的特殊成员函数
本篇笔记将深入浅出地探讨C++类的特殊成员函数相关知识。这些特殊成员函数也许你不经常见到,但是它们会自动生成和定义。这些可能隐式生成的特殊成员函数有:隐式默认构造函数,隐式默认析构函数,隐式默认拷贝构造函数,隐式赋值运算符以及隐式地址运算符。其中,隐式的拷贝构造函数和赋值运算符将可能带来一些问题。为了很好的理解其中的原理要点,特别的从一个实际工程中遇到的例子入手。一、工程中的一个例子在具体...原创 2018-12-07 22:34:43 · 455 阅读 · 0 评论 -
C++学习笔记(11)——初识类
在《C++学习笔记(1)——初识C++》中,大概总结了C++的特性是面向对象(oop),Bjarne Stroustrup最初将C++语言命名为带类的C语言。类是C++语言面向对象的集中体现。从今天开始,进入类的世界。1.什么是类类是一种将抽象转换为用户定义类型的C++工具。它将数据表示和操纵数据的方法组合成一个整体。类的基本思想是数据抽象和封装。类的书写语法规则是:1.类声明:以...原创 2018-12-01 18:07:16 · 728 阅读 · 0 评论 -
C++学习笔记(1)——初识C++
学习一门语言当然要从认识一门语言开始。一、背景世界上第一种计算机高级语言是诞生于1954年的FORTRAN语言。之后出现了多种计算机高级语言。1970年,AT&T的Bell实验室的D.Ritchie和K.Thompson共同发明了C语言。研制C语言的初衷是用它编写UNIX系统程序,因此,它实际上是UNIX的“副产品”。它充分结合了汇编语言和高级语言的优点,高效而灵活,又容易移植。...原创 2018-09-23 11:35:45 · 389 阅读 · 2 评论 -
C++学习笔记(2)——程序的创建、编译与调试
单位新来的同事(也是非科班出生)问我编程用什么软件时,我大多会告诉他们VS2010或者VS2008(原谅我们单位用的IDE还如此老旧)。他们便会找来VS2010或者VS2008的教程,一步步照着做起来。新建工程,写了一个main函数,打印了“helloworld”,点击了build和debug,看到一个控制台程序一闪而过,似乎是打印成功了,有的还会问我为什么一闪而过了。想想我当初也是这样的感觉,我...原创 2018-09-23 14:17:23 · 790 阅读 · 0 评论 -
C++学习笔记(3)——C++中的基本类型
数据加算法构成了我们通常所说的程序。数据作为程序的基本元素之一,其所包含的内容也是极其丰富的。为了更好的操作这些数据,就要对数据进行分类,这就引进了数据类型的概念。面向对象编程的本质是设计并扩展数据类型,而在这之前,我们必须了解C++的内置数据类型,然后在由此为基础设计新的数据类型。1.C++内置数据类型分类C++的内置数据类型包括基本类型和复合类型,基本类型也即我们平时常见的整型和浮点型...原创 2018-09-25 22:24:14 · 338 阅读 · 0 评论 -
C++学习笔记(4)——C++中的复合类型之数组和结构体
在《C++学习笔记(3)——C++基本类型》中总结了基本类型即整型和浮点型,但是对于一个稍微复杂点的程序,这些基本类型往往是不够的,或者准确的说是不方便的。本篇笔记总结下c++的复合类型。一、C++内置数据类型分类C++的内置数据类型包括基本类型和复合类型,基本类型也即我们平时常见的整型和浮点型;复合类型包括数组、结构体和指针等。 二、数组数组存在的意义很显然了:加入你要表...原创 2018-09-27 23:08:41 · 698 阅读 · 0 评论 -
C++学习笔记(5)——C++复合类型之指针
C++的内置数据类型包括基本类型和复合类型,基本类型也即我们平时常见的整型和浮点型;复合类型包括数组、结构体和指针等。在前两篇笔记中已经对基本类型和复合类型中的数组和结构体进行了总结,本篇笔记总结指针的相关原理和用法。一.指针基本原理指针是看似很神秘的存在,其实仅仅是因为,它所表示的意义不是你直观看到的东西,而是它“背后”的东西,仅此而已。定义了一个简单变量 int a; 程序就为a分...原创 2018-10-07 23:27:07 · 334 阅读 · 0 评论 -
C++学习笔记(6)——C++运算符和表达式
C++程序是由各式各样的语句组成的,而语句又是由表达式转化而来的。C++表达式是任何值或任何有效值与运算符的组合。本篇笔记总结C++程序的基本构成元素之一——表达式以及构成它所需的运算符。一、表达式需要明确任何值或任何有效值与运算符的组合都是表达式。同理,每个表达式都有值。例如:10本身就是一个值为10的表达式;10+10是一个值为20的表达式;x=20也是表达式,其中的赋值运算符(左值)...原创 2018-10-16 19:41:55 · 649 阅读 · 0 评论 -
C++学习笔记(7)——C++语句
C++程序是一组函数,而每个函数又是一组语句。C++有好多种语句类型,上篇笔记总结的表达式可以转化为语句,通常被称作表达式语句。除此之外,还有空语句(;),返回语句(return 0;),复合语句({}程序块)等。以上又被统称为简单语句。相对于简单语句,C++还有类似于C语言的特殊语句,条件语句、循环语句以及转移语句。本篇笔记总结这些特殊语句的用法。一、条件语句1.if语句if(boo...原创 2018-10-21 16:58:22 · 392 阅读 · 0 评论 -
C++学习笔记(9)——函数探幽
上一篇介绍了函数的基本构成,主要对函数工作的原理,函数参数的相关知识做了总结。本章将总结一些比较新的,更复杂的函数知识。这些内容有的确实比较少用,但是如果你掌握了它,最起码可以做到见到之后并不觉得奇怪。1.函数指针简单讲,函数也有地址。函数的地址是存储其机器语言代码的内存的开始地址。通常,这些地址对用户而言无关紧要,但对程序而言,却很有用。常见的可以编写将另一个函数的地址作为函数的参数,如...原创 2018-11-21 21:42:36 · 391 阅读 · 0 评论 -
C++学习笔记(8)——初识函数
函数是C++语言的编程模块。一个程序是由若干个函数组成的,比如程序的入口函数——main函数。但实际上函数的功能和他涉及的语法并不总是这么简单。本篇笔记将总结函数的基本知识。并将在后面的笔记中一步步深入总结函数的相关功能。1.使用函数的基本工作要使用函数需要完成三项基本工作,即:提供函数的定义,提供函数原型,调用函数。当然这三者从语法上讲并不要求同时存在。比如,可以只定义函数,而不调用。而...原创 2018-11-18 13:25:05 · 280 阅读 · 0 评论 -
C++学习笔记(10)——内存模型
在《C++学习笔记5——C++复合类型之指针》中,在分析new的时候,总结了内存分配方法。当时,根据C++管理内存数据的方式将数据存储方式总结为自动存储、静态存储、动态存储。本篇笔记将在此基础上,深入探讨C++中内存模型的持续性、链接性和作用域。在学习完函数之后,总结这些知识有助于合理规划自己的程序结构。毕竟,稍微有点规模的程序都不可能只在一个文件或几个函数内完成。1.什么是持续性、链接性和作...原创 2018-11-28 22:36:39 · 281 阅读 · 0 评论 -
C++学习笔记(24)——文件IO
上篇笔记中总结的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的。在实际应用中,常以磁盘文件作为对象。即从磁盘文件读取数据,将数据输出到磁盘文件。磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用。一、文件文件(file)是程序设计中一个重要的概念。所谓“文件”,一般指存储在外部介质上数据的集合。一批数据是以文件的形式...原创 2019-04-23 20:10:38 · 218 阅读 · 0 评论