C++ Primer Plus笔记
文章平均质量分 70
个人自己学习c++Primer Plus的学习心得,不适宜新学者学习,只是分享笔记
牧樵
学生
展开
-
TCP/IP通信(C++)
tcp/ip网络编程原创 2024-06-18 15:40:18 · 74 阅读 · 0 评论 -
C++之提高篇
cin与cout的使用,就不多说了,说一个有关保留小数位数的操作,使用ostream对象的precision()方法,表达的意思是数字总共有几位,注意,此时是包括整数部分的;set()方法表示换成保留小数点后位数。例如先是整体位数,在变成小数点位数,再变回来,注意代码实现。这是另一种写法,不过需要头文件,代码中我是使用了万能头文件;类型转换,将"123456"转换成123456。原创 2024-06-17 18:45:07 · 726 阅读 · 0 评论 -
cpp基础思维导图
加上之前的类思维导图,基础总结完!原创 2024-05-17 14:24:48 · 173 阅读 · 0 评论 -
cpp-类知识点完整思维导图!
原创 2024-05-07 20:01:48 · 306 阅读 · 0 评论 -
C++类简要概括
封装是C++面向对象三大特征之一。将属性和行为作为一个整体;设计类的时候,属性和行为写在一起。访问权限有三种:public:类内可以访问,类外可以访问private:类内可以访问,类外不可以访问,子类不可以访问父类私有内容protected:类内可以访问,类外不可以访问,子类可以访问父类保护内容struct默认权限是公有,class默认权限是私有。原创 2024-02-22 19:08:36 · 926 阅读 · 1 评论 -
C++指针
通过指针间接访问内存指针就是地址//1、定义指针int * p;int a = 10;//2、使用指针p = &a;cout原创 2023-12-18 21:07:06 · 382 阅读 · 0 评论 -
第十六章.string类和标准模板库(P656-)
智能指针是行为类似于指针的类对象,在以往的指针中,最后需要delete,但如果不收回,会导致内存泄漏,如果将指针作为一种类对象,其delete在类的析构函数中,会自动调用,也就会自动delete,这会方便很多。:接受两个定义区间的去迭代器参数,使用为存储再容器中的类型元素定义的原创 2022-09-08 12:38:38 · 48 阅读 · 0 评论 -
第十五章.友元,异常和其他(P603-654)
之前将友元函数用于类的扩展接口中,类并非只能拥有友元函数,也可以将类作为友元,友元类的所有方法都可以访问原始类的私有成员和保护成员。:这样在Remote类中就可以访问TV类的私有数据。在现实中就是不仅可以在电视机上更改数据,音量,频道等等,使用遥控器也能直接更改这些信息。在Remote类中,可能只有一两个成员函数会直接访问TV类的成员,其他函数对调用TV类的共有接口,这种情况下,只需要**将特定的类成员成为另一个类的友元,而不必让整个类成为类的友元.:然而,要使编译器能够处理这条语句,他必须知道Remo原创 2022-06-16 18:10:50 · 50 阅读 · 0 评论 -
第十四章.c++中的代码重用(P535-601)
如果一个类要使用另一个类的方法,需要将该类作为基类。但有时,两个类并没有直接联系,即只想使用某一种方法,而其他方法都没用,如果继承,就会出现新的问题。c++可以将类对象作为类成员。最常用的就是string类,存储字符串,以往的字符数组太麻烦。同理,如果是多个数字呢,c++库提供了这样的类---------------valarray这个类的使用与之前的vector和array有一些相似之处:此时dou为一个类对象。声明类对象的方式有很多:并且该类已经有很多方法以及重载运算符:总的来说,类的成员可以是原创 2022-06-13 19:51:00 · 67 阅读 · 0 评论 -
第十三章.类继承(P481-533)
c++提供了比修改代码更好的方法来扩展和修改类,这种方法叫做----类继承,它能从已有的类派生出新的类,而派生类继承了原有类 (称为基类) 的特征,包括方法,并且派生类:上述代码新定义一个类,使用public表示Student是一个公有基类,这被称为共有派生。派生类对象包含基类对象。使用共有派生,基类的公有成员将成为派生类的公有成员;基类的私有成员也成为派生类的一部分,但只能通过基类的共有和保护方法访问。即实现了补充一个内容,在函数执行前给变量初始化,可以使用初始化列表:冒号后,加变量名,然后括号内为原创 2022-06-07 19:37:12 · 53 阅读 · 0 评论 -
第十二章.类和动态内存分配(P426-479)
动态内存与类本章讲述类的动态分配内存问题,如果类中包含一个字符串,那该字符串内容空间大小的声明不能太大也不能太小,因此动态分配内存最为合理。并且通常在构造函数中使用new分配空间,在析构函数中使用delete释放空间。下面是一个简单的示例:#include<iostream>#include<cstring>using namespace std;class Stringbad{ private: char * str; int len; stat原创 2022-06-05 10:50:14 · 134 阅读 · 0 评论 -
第十一章.使用类(P381-422)
运算符重载运算符重载是c++多态的一种形式,第八章介绍了c++函数重载(函数多态),本节介绍运算符重载,例如,“+”可以实现普通类型的相加,但如果现在是两个对象呢?想实现两个对象数据相加,就需要将“+”含义重载,利用关键字:operator#include<iostream>using namespace std;class Num{ private: int n; public: Num(); Num(int); void show(); Num add(con原创 2022-05-26 18:15:37 · 114 阅读 · 0 评论 -
第10章 对象和类(P341-377)
过程性编程和面向对象编程过程性编程:首先考虑要遵守的步骤,然后考虑如何表示这些数据OOP方法:首先从用户角度考虑对象—描述对象所需的数据以及描述用户与数据交互所需要的操作。完成对接口的描述后,需要确定如何实现接口和数据存储,最后,使用新的设计方案创建出程序。类的定义一般放在头文件里,使用class关键字定义,并且类名称第一个大写:# student.h#include<string>#ifndef _STUDENT_H_#define _STUDENT_H_class Stude原创 2022-05-22 22:40:55 · 98 阅读 · 0 评论 -
第九章 内存模型和命名空间(P301-335)
9.1单独编译一个程序可以分为三部分:头文件:结构体声明和函数原型源代码文件:与结构有关的函数代码源代码文件:调用与结构有关的函数代码头文件中经常包括:函数原型,#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数。因为这些都是与定义无关的内容,而内联函数有链接属性。普通函数定义不能放在头文件中,因为如果多个程序调用了该头文件,但都包含了同一个函数定义,会报错。在一个文件中,头文件只能包含一次,为防止包含多次,可以使用预处理编译指令#ifndef(if not de原创 2022-05-17 16:10:24 · 138 阅读 · 0 评论 -
第八章 函数探幽(P254-297)
本章之后就是c++与c最大的不同,也就是c++独有的内容。内联函数常规函数与内联函数的区别主要不在于编写方式,而是c++编译器如何将它们组合到程序中。常规函数:执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后跳回到地址被保存的指令出,这样来回跳跃位置意味使用函数需要一定的开销。内联函数:编译器将使用相应的函数代码替换函数调用,无需跳到另一个位置执行代码,所以内联函数运行速度比常规函数快,但需要占用更多的内存。(内原创 2022-05-14 16:18:56 · 194 阅读 · 0 评论 -
第七章 函数(C++的编程模块)P203-249
函数的原型原型描述了函数到编译器的接口,将函数返回值的类型,参数的类型和数量告诉给编译器。声明原型时,可以不包括变量名。值传递通常函数是将传入的数值赋给参数,相当于副本,我们成为值传递,不会改变原本变量的值。函数与数组函数允许将数组作为参数传入:int sum(int ar[], int n);如上,但事实是:ar是一个指针,只是我们在函数中操作时,将ar看作数组,但其本质是指针。我们c++中,数组名解释为数组第一个元素的首地址,但存在例外:数组声明使用数组名来标记存储位置对数组名使原创 2022-05-10 20:43:57 · 139 阅读 · 0 评论 -
第六章 分支语句和逻辑运算符(167-197P)
关于if语句没有其他需要特别注意的,多个语句时需要使用大括号,条件测试语句会被强制转换为布尔类型(True,Flase),可以进行if语句嵌套。以及else if的不同条件的执行语句。逻辑表达式或(||),且(&&),非(!);这里要注意,或,且运算符的优先级比较底,使用可以不加括号,但为了程序便于查看,一般可以加括号。但是非(!)运算符的优先级要高于所有关系运算符和算术运算符,所以需要给表达式求反,必须使用括号?:运算符条件运算符,也可以称之为三目运算符,这是c++中唯一需要三个原创 2022-05-10 16:56:29 · 59 阅读 · 0 评论 -
第五章 循环和关系表达式(124-162)
因为前段时间学习matlab,准备建模比赛事情,所以耽误了c++primer的学习时间,一直拖到今天才更新笔记,学习了c++,感觉学习matlab很轻松,但比赛还是没有达到预期结果,尽力了,接下来会尽快结束c++Primer的学习!冲!(笔记为本人使用c++primer plus复习c++内容所书写的,不会很具体,如有不对,希望大家指正!!!)循环和关系表达式for循环一个for循环主要包括四个部分设置初始值执行测试,看看循环是否应当继续进行执行循环操作更新用于测试的值如果循环体只有一原创 2022-04-20 21:35:11 · 1000 阅读 · 0 评论 -
指针与字符串.vector(111-122P)
指针与字符串int ft[10] = "flower";cout<<ft<<"s are red!\n";上面的代码看起来易懂,但存在一个问题,我们知道数组名代表的是数组第一个元素的首地址,所以输出ft应该是输出数组的第一个元素首地址才正确,但这里结果却是输出数组的具体内容,...原创 2022-03-31 22:04:37 · 256 阅读 · 0 评论 -
指针,new运算符
指针指针是一个变量,其存储的是值的地址,而不是值的本身。*运算符被称为间接值或者解除引用运算符,将其应用于指针,可以得到该地址处存储的值。int *p;p的类型是指向int的指针int num;num = 5;p = #将num的地址赋予指针pint *pt;double *pm;这里需要注意一点,pt,pm指向两种长度不同的数据类型,但这两个变量本身的长度通常是相同的指针和数字int * pt;pt = 0xB8000000;//pt存储地址,而右边是整原创 2022-03-27 21:51:01 · 1654 阅读 · 1 评论 -
C++语句.函数.数据类型(23-47P)
赋值语句赋值跟输入输出流不做详细的介绍,有一点需要注意,输入输出流cin,cout是std命名空间里的,如果没有声明命名空间std,则需要这样使用:std::cout<<"i like c++!";函数使用函数之前,c++必须知道函数的参数类型和返回值类型,函数的声明:type functionname(type);//例如int addNum(int,int);函数的定义:int addNum(int a,int b){...}这里的a和b是函数的形参,需要原创 2022-03-26 22:22:15 · 614 阅读 · 0 评论 -
struct结构(92-97 p )
结构体支持直接整体赋值,而数组不允许。struct mumbers{ char names[20]; int ages; double stature;};members m1{ "kyle", 18; 180.0}members m2 = m1;//可以直接整体赋值结构体还支持其他格式的定义格式:struct mumbers{ char names[20]; int ages; double stature;}m1,m2;//直接在后原创 2022-03-25 22:20:04 · 814 阅读 · 0 评论 -
结构体struct相关笔记(88-92 p )
本人学习笔记,如有错误,请大家批评指正!!!struct结构体通常的数据类型是单一的,整数,浮点型,字符型。包括数据在内,数组的每个元素类型也是统一的,但如果要针对某一个事物的多个属性进行描述,单独分开定义,各属性间关系无法表示,太过于繁琐且离散,因此,C++提供一种特殊的声明类型结构体——struct。可根据用户自己需求将所需要定义的数据类型放在结构体中,这样结构体就类似于一个新的类型,该类型下包括其他类型的数据struct member{ char names[20]; in原创 2022-03-24 22:46:59 · 596 阅读 · 0 评论 -
C++的简史(补1-22p)
传统程序员使用汇编语言,汇编语言依赖于计算机的内部机器语言,不能跨平台;计算机语言要处理的两个概念——数据和算法。数据是程序使用和处理的信息;算法是程序使用的方法;C语言强调算法;C++强调数据;C++是一种面向对象编程(OOP),将数据和方法合并为类定义,而且可以保护数据,还有多态,继承等等;C++也支持泛型编程,强调独立于特定的数据类型(有点模板的意思,具体介绍后续写)。C++程序的运行大体过程:1)使用文本编辑器编写程序,保存在文件中,这个文件就是程序的源代码。2)编译原创 2022-03-23 21:40:04 · 553 阅读 · 0 评论 -
使用string类定义字符串(82-88p)
使用char类型数组可以定义字符串,但太过于繁琐,操作不方便,因此c++引用string类库(加入头文件#include<string>),可以将string看作一个数据类型,如int double等,直接定义一个字符串,定义赋值与其他类型数据一样,但是需要加双引号。其中仅定义未赋值的字符串内存为零,不占据空间,等后期输入字符串则会开辟相应空间,若两次赋值不同长度字符串,开辟的空间也会随之变化。string str1;string str2="basic";数组不能相互直接整体赋值,原创 2022-03-23 20:26:40 · 2594 阅读 · 0 评论 -
数组的基本概念及赋值(71-81p)
(数组中每个元素的类型)类型 数组名 元素数(不能是变量);可以单独访问数组中的每个元素,使用下标或者索引(从0开始,最后一个元素的索引比数组长度小1);sizeof运算符得到整个数组的字节数;初始化:大括号,可省略元素数,根据大括号里的元素个数确定方括号里的元素数。大括号里声明的元素个数可以小于方括号里的元素数,其余元素默认为0;char(字符)数组中声明每个元素需要加上''(单引号),或者直接不用大括号,使用双引号,里面输入字符串。(双引号里加单个字符,表示该字符的地址);strle原创 2022-03-22 21:46:21 · 560 阅读 · 0 评论