
C++
文章平均质量分 56
weixin_45766539
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
main(int argc,char **agrv)的含义
argc 和 argv 的主要用途为程序运行时,将命令行中的输入参数传递给调用函数。那就是 main 函数声明中使用到的 argc 和 argv 的含义。通常我们写主函数的时候一般都是直接使用int main() 或者 void main() 来声明 main 函数。下面我们动手实践一下,将下面的代码编译后生成对应的可执行程序(.exe)后运行。从上述程序的输出结果可以清楚的看到 argc 和 argv 代表的具体含义。一个存储字符串的数组,会以字符串的形式保存用户调用程序时传入的参数。原创 2025-07-08 23:29:15 · 330 阅读 · 0 评论 -
C++ inline函数
函数前面加inline,如:{ }1、inline内联函数 和 普通函数的区别:若是inline内联函数,在编译过程中,就没有函数的调用开销了,在函数的调用点直接把函数的代码进行展开处理了2、inline函数不再生成相应的函数符号3、inline只是建议编译器把这个函数处理成内联函数,但是不是所有的inline都会被编译器处理成内联函数----如:递归、函数内容比较多的4、debug版本上,inline是不起作用的;inline只有在release版本下才能出现。原创 2025-06-23 17:19:24 · 286 阅读 · 0 评论 -
【C++】std::bind和std::placeholders(占位符)
std::bind是C++11引入的函数适配器模板,用于创建新的可调用对象,其核心语法和功能如下。原创 2025-06-09 21:34:38 · 383 阅读 · 0 评论 -
【C++】函数指针
因此,较简单的函数调用是(*pd)[i](av,3),而*(*pd)[i](av,3)是返回的指针指向的值。也可以使用第二种使用指针调用函数的语法:使用(*(*pd)[i])(av,3)来调用函数,而*(*(*pd)[i])(av,3)是指向的double 值。括号的优先级比*运算符高,因此*pf(int)意味着 pf()是一个返回指针的函数,而(*pf)(int)意味着pf是一个指向函数的指针。由于数组名pa是指向函数指针的指针,因此指向数组的指针将是这样的指针,即它指向指针的指针。原创 2025-06-06 20:12:34 · 675 阅读 · 0 评论 -
C++11 智能指针
共享所有权,具有复制语义,多个shared_ptr指向同一个对象时,每个shared_ptr的引用计数都会记录指向该对象的shared_ptr的数量,当最后一个指向对象(和共享计数)的shared_ptr 析构时,它会删除对象和共享计数,通过use_count方法可以获取shared_ptr对象的共享计数值。1、std::shared_ptr的尺寸大于裸指针,一般是裸指针的两倍,因为它内部既包含一个指向到资源的裸指针,也包含一个指向该资源的引用计数的裸指针。原创 2025-06-08 19:20:30 · 700 阅读 · 0 评论 -
C++进阶
3、接收返回值是对象的函数调用的时候,优先按初始化的方式接收,不要按赋值的方式接收。2、函数返回对象的时候,应该优先返回一个临时对象,而不要返回一个定文过的对象。1、函数参数传递过程中,对象优先按引用传递,不要按值传递。原创 2025-06-17 09:47:05 · 109 阅读 · 0 评论 -
【C++】标识符的命名规则:
标识符不能是关键字.标识符只能由字母、数字、下划线组成第一个字符必须为字母或下划线标识符中字母区分大小写。建议:给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读。原创 2024-06-19 08:54:13 · 142 阅读 · 0 评论 -
C++运算符&& 和 ||
&和逻辑或运算符 || 都是从左到右结合的,在计算机包含“&&”或“||”的表达式时,一旦能确定整个表达式的值,求解就会立即停止。若第一个表达式为假,就不会去处理第二个表达式。若第一个表达式为真,就不会去处理第二个表达式。如果A为false,则不执行B。如果A为false,则执行B。如果A为true,则不执行B。如果A为true,则执行B。原创 2025-05-01 20:11:46 · 305 阅读 · 0 评论 -
【C++】引用符&
/正确,加入const后,编译器优化为int temp =10;(2)C++标准并没有规定引用是否占用内存空间,但是大多数编译器都把引用实现为const指针,所以大部分编译器中引用也是要占内存空间的;//错误,引用本身需要合法的内存空间,因此直接赋值是非法操作。(3)引用是天然const的,所以定义时必须初始化指向变量,否则就没意义了;总结:功能上来说,引用是受限制的指针,相当于用const修饰的指针变量类型;(4)引用本质是指针,是地址,所以才能实现传址调用的效果;原创 2024-06-19 11:43:49 · 199 阅读 · 0 评论 -
【C++】递增运算符
结果为:a2=11;结果为:a3=11;前置++:先运算++,再做其他运算。后置++:先做其他运算,再运算++原创 2024-06-19 08:58:36 · 382 阅读 · 0 评论 -
【C++】switch语句
3.与if语句比,对于多条件判断时,switch的结构清晰,执行效率高。2:case里如果没有break,那么程序会一直向下执行。1:switch语句中表达式类型只能是整型或者字符型。原创 2024-06-19 08:51:26 · 206 阅读 · 0 评论 -
【C++】const修饰的指针
int * const p= &a:指针常量。特点:指针的指向不可以改,指针指向的值可以改。特点:指针的指向和指针指向的值都不可以改。*p=20:正确,指向的值可以改。p=&b:错误,指针指向不可以改。原创 2024-06-19 08:48:56 · 204 阅读 · 0 评论 -
【c++】函数高级
b函数重载碰到默认参数(当函数重载碰到默认参数,出现二义性,报错,尽量避免写函数重载又加默认参数的情况)(2)如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值。a引用作为重载条件,是否加const修饰引用可以作为重载的条件。c函数参数类型不同 或者 个数不同 或者 顺序不同。(1)如果我们自己传入数据。就用传入数据,如果没有,则用默认值。(3)如果函数声明有默认参数,则函数实现不能有默认参数。返回值类型 函数名 (数据类型) {}( 函数的返回值不可以作为函数重载的条件)原创 2024-06-19 12:41:01 · 135 阅读 · 0 评论 -
【C++】new运算符
new返回是 该数据类型的指针,利用关键字delete释放。原创 2024-06-19 10:39:39 · 107 阅读 · 0 评论 -
C++使用 new 来创建动态数组
这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大小,这样就无法分配正确的内存空间。如果需要动态地定义数组的大小,可以使用动态内存分配的方式,即使用new运算符来在堆上分配内存空间。需要注意的是,使用动态内存分配后,需要在不再使用数组时手动释放内存,以避免内存泄漏。不能使用变量定义数组大小。原创 2025-06-06 11:56:37 · 212 阅读 · 0 评论 -
【C++】程序的内存模型
4、堆区:由程序员分配释放,若程序员不释放,程序结束时由操作系统回收,主要用new在堆区开辟内存。//vs上输出结果为10。b、const修饰的全局变量(注意,const修饰的局部变量不在全局区)1、代码区:存放函数体的二进制码,由操作系统管理。分为4个区域:代码区、全局区、栈区、堆区。2、全局区:存放全局变量和静态变量(3、栈区:由编译器自动分配释放,存放。原创 2024-06-19 10:30:43 · 327 阅读 · 0 评论 -
【C++】类和对象
class 类名//访问修饰符://public或protected或private//成员变量和成员方法。原创 2024-06-21 23:06:57 · 542 阅读 · 0 评论 -
【C++】重载运算符operator
总结1:对于内置的数据类型的表达式的的运算符是不可能改变的。2、作为全局函数重载运算符(当访问类内私有成员时,可以利用友元解决)对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。为了实现连续调用<<,重载运算符函数返回值类型要是ostream&<返回类型> operator <运算符符号>(<参数列表>)总结2:不要滥用运算符重载——比如:不要重载加号实现减法内容。为了实现cout在左边,只能利用全局函数重载左移运算符。由于重载后使用的方式非常像函数的调用,因此称为仿函数。原创 2025-04-07 01:53:22 · 555 阅读 · 0 评论 -
【C++】文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化C++中对文件操作需要包含头文件<fstream >1.文本文件:文件以文本的ASCII码形式存储在计算机中2.二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们1.ofstream:写操作2.ifstream:读操作3. fstream:读写操作。原创 2025-03-30 21:39:13 · 483 阅读 · 0 评论 -
【C++】STL
空间配置器STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。有限的步骤,解决逻辑或数学上的问题,这一门学科我们叫做算法(Algorithms)2.算法:各种常用的算法,如sort、find、copy、for_each等。:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等等。例如拷贝,替换,删除等等。常用的数据结构:数组,链表,树,栈,队列,集合, 映射表 等。原创 2025-04-08 00:30:05 · 328 阅读 · 0 评论 -
【C++】模板
建议全局函数做类内实现,用法简单,而且编译器可以直接识别。原创 2025-04-04 01:39:10 · 719 阅读 · 0 评论 -
【C++】类模板案例——数组类封装
头文件和源文件写一起,后缀命名为 .hpp。原创 2025-04-07 22:50:29 · 164 阅读 · 0 评论 -
C++11
与数组一样,array 对象的长度也是固定的,也使用栈(静态内存分配),而不是自由存储区,因此其效率与数组相同,但更方便,更安全。与传统的初始化方式相比,它对类型转换的要求更严格。如果一个操作数为有符号的,另一个操作数为无符号的,且无符号操作的级别比有符号操作数高,则将有符号转换为无符号操作数所属的类型。在这种情况下,如果两个操作数都是有符号或无符号的,且其中一个操作数的级别比另一个低,则转换为级别高的类型。否则,如果有符号类型可表示无符号类型的所有可能取值,将无符号操作数转换为有符号操作数所属的类型。原创 2025-06-06 16:39:30 · 655 阅读 · 0 评论