摘要: 一、浅拷贝(Shallow Copy) 浅拷贝是指创建一个新对象,然后将其成员变量(包括指针成员)的值简单地复制到新对象中。 如果成员变量是值类型(如int、float等),那么直接复制其值; 如果成员变量是指针类型,则只复制指针的地址值,而不复制指针所指向的内存区域。 浅拷贝导致的问题 由于浅拷贝 阅读全文
posted @ 2024-08-27 23:09 baobaobashi 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 一、构造函数的调用规则 定义了有参构造函数,编译器就不会提供默认构造函数,但是会提供拷贝构造函数。 定义了拷贝构造函数,C++不会提供其他构造函数。 构造函数的调用时机: 当创建类的对象时,构造函数会被自动调用。 使用new分配对象内存时 直接在栈上或全局/静态存储区创建对象。 构造函数的特点: 构 阅读全文
posted @ 2024-08-27 11:57 baobaobashi 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 一、顺序容器类型 顺序容器提供了元素存储。 顺序容器也提供了对元素的顺序访问,但不一定提供直接访问特定元素的能力(除了std::array和std::vector,它们提供了基于索引的直接访问)。 以下是C++ STL中主要的顺序容器类型: std::vector: 动态数组,可以动态地增长和缩小。 阅读全文
posted @ 2024-05-27 02:12 baobaobashi 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 一、IO类 c++不直接处理输入和输出,而是通过标准库中的类型处理IO。C++ 的 I/O(输入/输出)库主要包含在 < ifstreamtream >、< fstream >、< sstream > 等头文件中。这些库提供了丰富的功能,用于在控制台、文件、字符串等之间进行数据的输入和输出。 ifs 阅读全文
posted @ 2024-05-25 14:44 baobaobashi 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 一、static的作用 在C++中,static关键字是一个多功能的修饰符,它可以用于不同的上下文,并且具有不同的意义。 二、局部静态变量 在函数内部,如果你使用static关键字声明一个变量,那么这个变量只会初始化一次,并且它的生命周期会持续到程序结束。 这意味着,即使在函数返回之后,这个变量的值 阅读全文
posted @ 2024-05-25 00:32 baobaobashi 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 在C++中,聚合类(Aggregate Class)或聚合(Aggregate)是一个特殊的类,它满足以下条件: 所有成员都是public的(虽然这并非严格要求,但如果是private或protected,则无法直接访问它们进行聚合初始化)。 初始值的顺序必须与声明一致 没有用户定义的构造函数、拷贝 阅读全文
posted @ 2024-05-24 01:29 baobaobashi 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 友元的三种类型 全局函数做友元 类作友元 成员函数做有元 特点 友元函数不是成员函数,所以友元函数没有this指针。 它可以访问类的私有(private)和保护(protected)成员。 友元函数通常定义在类外,但在类中声明为友元。 注意友元的定义要么放在最开始,要么放在最后。 友元函数 在类的定 阅读全文
posted @ 2024-05-23 17:20 baobaobashi 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。 一、构造函数注意 名字和类名相同。 没有返回类型。 有一个(可以为控)的参数列表和一个(可以为空)的函数体。 可以重载。 不能被声明为const。 当创建一个const对象时,知道构造函数完成初始化过程,对象才能 阅读全文
posted @ 2024-05-23 00:50 baobaobashi 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 一、声明 要声明一个可以指向函数的指针,只需要用指针替换函数名即可。 bool LengthCompare(const string &s1, const string &s2); //使用指针进行替换 bool (*pf)(const string &s1, const string &s2); 阅读全文
posted @ 2024-05-22 11:17 baobaobashi 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 一、函数匹配 当我们有重载函数的时候并且重载函数参数可以通过类型转换得到时,我们需要考虑函数匹配,调用的到底是那个函数。 void f(); void f(int); void f(int, int); void f(double, double = 3.14); f(5.6); //调用f(dou 阅读全文
posted @ 2024-05-20 00:53 baobaobashi 阅读(6) 评论(0) 推荐(0) 编辑