随笔分类 - C++ 知识点
摘要:1、find(); find()算法的作用是在指定的一段序列中查找某个数,包含三个参数,前两个参数是表示元素范围的迭代器,第三个参数是要查找的值。 例:fing(vec.begin(), vec.end(), val); //在vec中查找值val,该val可以是数字、字符串。 2、count();
阅读全文
摘要:容器中的内容必须满足三个条件: (1)无参构造函数 (2)拷贝构造函数 (3)重载 = 运算符
阅读全文
摘要:1、set的基础知识 set的特性是:所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。 set的各成员函数列表如下: 1. begin():返回指向第一个元素的迭代
阅读全文
摘要:参考博客:https://blog.csdn.net/qq_37941471/article/details/82107077 https://www.cnblogs.com/danielStudy/p/7127564.html#top 1、声明一个字符串 标准库类型string表示可变长的字符序列
阅读全文
摘要:1、文件输入、输出流 由于文件设备并不像显示器屏幕与键盘那样是标准默认设备,不能像cout那样预先定义的全局对象,所以我们必须自己定义一个该类的对象。 文件原理 文件打开都有一个文件指针,该指针的初始位置由I/O方式指定,每次读写都从文件指针的当前位置开始。每读入一个字节,指针就后移一个字节。当文件
阅读全文
摘要:1、异常处理机制 一般来说,异常处理就是在程序运行时对异常进行检测和控制。而在C++ 中,使用 try-throw-catch模式进行异常处理的机制。 注意: (1)C++中,异常的引发和处理不在一个函数中,上层可以根据不同类型的异常进行处理;按照栈模型处理,一层层传递; (2)如果 接受异常的时候
阅读全文
摘要:0、总结 (1)要转换的变量,转换前、转换后、转换后的结果。 (2)一般情况下,避免进行类型转换。 1、_static_cast(静态类型转换,int 转换为char) 格式:TYPE B = static_cast<TYPE>(a) reinterpreter_cast(重新解释类型):专门用于指
阅读全文
摘要:实现 stl 中的 vector 操作。 1、MyVector.h 2、MyVector.cpp 3、MyVector.cpp(测试函数)
阅读全文
摘要:1、普通函数与模板函数调用原则 函数模板本质: 编译器中的汇编,根据函数模板帮程序员生成 不同类型 函数; 具体是进行两次编译:在声明时对模板代码本身进行编译,在调用时对参数替换后的代码进行编译; 函数模板可以和普通函数一样发生重载; 2、模板类的派生 需要具体化模板类,知道父类的数据类型,才知道如
阅读全文
摘要:1、函数模板(参数多态) 相当于一个函数发生器,参数多态,可以重载。 普通函数和模板函数的本质区别: 一个函数模板可以取代许多具体的函数定义,可以大大减少编程工作量。 2、类模板 使用类模板来定义栈类,进栈、出栈。
阅读全文
摘要:1、多态 面向对象程序设计中,多态性表现为: (1)重载多态:函数重载、运算符重载; (2)运行多态:通过基类的指针(或引用)调用不同派生类的同名函数,表现出不同的行为; (3)模板多态:参数多态,通过一个模板得到不同的函数或不同的类,具有不同的特性和不同的行为; 2、同名覆盖与重载 (1)over
阅读全文
摘要:一个空的class在内存中多少字节?如果加入一个成员函数后是多大?这个成员函数存储在内存中什么部分? 一个Class对象需要占用多大的内存空间。最权威的结论是: 介绍完了理论知识后,再看看再找一个例子看看(注:一下所有结果都是在VC6.0 开发环境中得出的结论) 1、空类的Size 编译器在执行Ca
阅读全文
摘要:程序调试技术: (1)阅读程序,静态代码复查; (2)“cout大法” (3)使用开发工具,断点 说明: 输出当前源代码所在的文件名及当前语句所在的行号;
阅读全文
摘要:派生类继承了基类的所有成员,但不包含 构造函数、析构函数、默认赋值运算符。 1、继承方式、访问控制 (1)protected属性:类的对象不能访问该属性成员,但派生类的成员函数可以访问基类的protected属性成员。 (2)无论哪种继承方式,派生类成员函数都可访问:public、protected
阅读全文
摘要:1、MyString.h 头文件 2、MyString.cpp 函数实现文件 3、test.cpp 测试文件
阅读全文
摘要:1、等号操作符重载,实现深拷贝 2、赋值运算符重载 由于动态申请了堆空间,因此必须重载复制构造函数和赋值运算符: (1)复制构造函数在创建对象时调用,此时对象还不存在,只需申请空间,不需释放原有的; (2)赋值运算符在对象已经存在的情况下调用,需要先释放原有对象占用的空间,然后申请新的空间;由于原有
阅读全文
摘要:运算符重载的实质:函数重载。除了增加一个关键字 operator 外,与函数重载没有区别,都是通过该类的某个对象来访问重载运算符。 (1)重载运算符时,运算符运算顺序和优先级不变,操作数个数不变; (2)不能创造新的运算符; (3)形式:重载为类的成员函数。对象本身就是其中的一个操作数,所以形参表内
阅读全文
摘要:友元是可以访问类的私有成员和保护成员的外部函数。由 friend 修饰,不是本类的成员函数,但是在它的函数体中可以通过对象名访问本类的私有和保护成员。 友元关系不可传递,且是单向的。 友元函数:声明为友元的一般函数或是另一个类的成员函数; 友元类:友元类的所有成员函数都是某个类的友元函数。应用场景较
阅读全文
摘要:1、类成员函数的初始化: (1)按照声明顺序初始化,而不是按出现在初始化列表中的顺序; 2、区别: (1)全局函数的参数个数,比局部函数要多一个; (2)二者都可,返回元素、返回引用。
阅读全文
摘要:常量:对于既需要共享、又需要防止改变的数据。在程序运行期间不可改变。 const 修饰的是对象中的 this 指针。所以不能被修改。 this指针存在于类的成员函数中,指向被调用函数所在的类实例的地址。 1、常对象 数据成员值在对象的整个生存期内不能改变。在定义时必须初始化,而且不能被更新。 常对象
阅读全文