![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习
文章平均质量分 56
一路低首
这个人很懒,还没有添加简介。
展开
-
Windows下打包C++程序无法执行:无法定位程序输入点于动态链接库
这样可以确保生成的可执行文件在其他系统上也能够正常运行,而不需要依赖于特定的动态链接库。使用该方法的缺点就是编译后的exe文件体积会变大。 本想下载相应的dll来解决,但是这个报错不提示缺失哪个dll,所以使用CMake编译指令。而且exe文件在其它电脑上可以运行,所以应该是我的电脑缺失相应的dll。 通过注释头文件的方式,初步定位问题是因为使用了。在CMake中的意思是设置可执行文件链接器的标志为。原创 2023-12-04 14:00:32 · 930 阅读 · 0 评论 -
【C/C++】static和const的作用和用法
与函数内的普通局部变量不同,静态局部变量在函数的多次调用之间保持其值,并且仅在第一次进入声明该变量的代码行时进行初始化。通常,将静态成员变量的初始化放在类的实现文件中,并在头文件中声明静态成员变量的存在。静态局部变量的初始化只在第一次进入声明它的代码行时进行,之后的函数调用不会再次初始化它。注意,在构造函数的函数体内不能对const成员变量进行赋值操作,因此必须使用构造函数的初始化列表来进行初始化。静态局部变量的初始化只发生一次,以后每次进入声明该变量的作用域时,都不会重新初始化,而是保留上一次的值。原创 2023-06-16 09:56:51 · 511 阅读 · 0 评论 -
【C/C++】多线程安全问题的原因及解决方法
为了解决这些多线程安全问题,可以使用同步机制(如互斥量、信号量、条件变量)来协调线程之间的访问,或者使用并发编程模型(如锁机制、原子操作、并发数据结构)来保证数据的一致性和正确性。这些是常见的C++多线程编程中可能出现的安全问题,避免这些问题需要合理地使用同步机制,如互斥量(mutex)、条件变量(condition variable)、原子操作(atomic)等来保护共享数据的访问。的值,另一个线程对其进行写操作,由于没有进行同步,可能导致读取到不一致或无效的数据。上述代码中,两个线程同时对。原创 2023-06-15 09:29:42 · 2482 阅读 · 0 评论 -
【C/C++】默认构造函数
注意,如果你显式定义了任何构造函数(包括拷贝构造函数、移动构造函数等),编译器将不再生成默认构造函数。这意味着如果你需要一个默认构造函数,但已经定义了其他构造函数,你需要显式提供一个不带参数的构造函数。在C++中,如果你没有显式地定义类的构造函数,编译器会为该类生成一个默认构造函数。它的作用是在创建对象时初始化类的成员变量。这里没有显式定义构造函数,因此编译器将为该类生成一个默认构造函数。以上代码中,我们通过显式提供一个默认构造函数来确保即使已经定义了其他构造函数,仍然可以使用默认构造函数创建对象。原创 2023-06-12 22:06:32 · 457 阅读 · 0 评论 -
【C/C++】初始化列表
C++初始化列表是一种用于在对象构造过程中初始化成员变量的语法结构。它使用在构造函数的参数列表后面使用冒号(:)来指定成员变量的初始化值。原创 2023-06-12 20:46:54 · 684 阅读 · 0 评论 -
【C/C++】lameda匿名函数
C++中的lambda函数是一种匿名函数,可以在需要函数对象的地方使用,而无需单独定义一个函数。lambda函数可以捕获上下文中的变量,并且可以作为函数指针或函数对象使用。原创 2023-06-12 20:36:36 · 560 阅读 · 0 评论 -
【C/C++】函数指针
函数指针在C++中是强大且灵活的工具,可以用于实现回调机制、动态函数调用等多种应用场景。请注意,函数指针的语法可能较为复杂,需要理解指针和函数声明的基本知识。原创 2023-06-11 11:10:21 · 615 阅读 · 0 评论 -
【C/C++】typedef的用法
在C++中,typedef是一种用于为已有类型创建别名的关键字。它可以提高代码的可读性和可维护性,使得类型的用途更加清晰明了。typedeftypedef 原类型 新类型;总之,typedef是C++中用于为已有类型创建别名的关键字,可以提高代码的可读性和可维护性。它常用于创建类型别名、指针类型别名、函数指针类型别名等,以及为复杂类型创建别名。原创 2023-06-11 10:33:07 · 726 阅读 · 0 评论 -
【C/C++】std::function 的作用和用途
是 C++ 标准库中的一个类模板,它用于封装可以调用的任意可调用对象,包括函数指针、函数对象、Lambda 表达式等。提供了一种通用的方式来存储、复制和调用可调用对象,使得可以将它们作为参数传递给其他函数、存储在容器中,或者作为返回值返回。它是一种多态函数包装器,可以在运行时决定具体要调用的函数或函数对象。通过使用,可以实现更灵活的函数传递和回调机制,提高代码的可复用性和可扩展性。原创 2023-06-11 10:17:29 · 833 阅读 · 0 评论 -
【C/C++】作用域解析运算符(Scope Resolution Operator)在C++中的用法和作用
作用域解析运算符(Scope Resolution Operator)是在C++中使用的一种语法,它允许您指定特定的作用域来访问类、枚举、命名空间中的成员或类型。原创 2023-06-10 10:11:50 · 1128 阅读 · 0 评论 -
【C/C++】探索C/C++中的类型重命名机制
C/C++是一种强类型的编程语言,类型系统在代码编写和理解中起着重要的作用。为了提高代码的可读性和可维护性,C/C++提供了多种类型重命名机制,使得开发人员可以为现有类型引入更直观、易懂的名称。using别名、宏定义和typedef关键字,并比较它们的使用方法和适用场景。宏定义是C/C++中另一种常见的类型重命名机制。通过定义宏,可以将一个类型名称替换为另一个名称。将类型重命名为json。宏定义具有全局替换的特性,但也容易导致命名冲突和意外替换的问题,因此需要谨慎使用。原创 2023-06-10 09:32:59 · 1265 阅读 · 0 评论 -
【C/C++】回调函数
回调函数是一种在程序运行期间,它通常用于。在回调函数的使用中,当某些事件发生时,系统会调用预先注册好的回调函数,将事件相关的数据传递给回调函数,由回调函数进行处理。这种回调函数的机制常用于异步通信、网络编程、GUI 前端等场景中,常见的回调函数包括事件处理函数、信号处理函数、消息处理函数等。回调函数通常使用函数指针来进行实现,首先定义一个函数指针类型,然后将回调函数的地址赋值给函数指针,最后在需要注册回调函数的地方将函数指针作为参数传入即可。在回调函数中,,而。原创 2023-06-09 17:49:09 · 1897 阅读 · 0 评论 -
【C/C++】内联函数
内联函数的优点是减少函数调用的开销,因为函数的代码被直接插入到调用点,避免了函数调用的开销,特别是对于简短的函数。然而,内联函数适用于代码量较小的函数,如果函数代码较长,内联可能导致代码膨胀,使可执行文件变得较大。因此,编译器可能会选择忽略内联函数的内联请求,而将其视为普通函数。需要注意的是,内联函数的定义通常放在头文件中,以便在需要调用该函数的地方进行内联展开。这是因为在编译单元之间进行函数内联需要编译器能够访问函数的定义。原创 2023-06-09 10:27:15 · 783 阅读 · 0 评论 -
【C/C++】预处理功能
C++中的预处理器是一个内置的功能,**用于在编译代码之前对源代码进行处理。**它通过识别以井号(#)开头的预处理指令,并根据这些指令执行相应的操作。原创 2023-06-07 22:50:12 · 70 阅读 · 0 评论 -
【C/C++】头文件保护
使得头文件安全的通用做法,是使用预处理器定义头文件保护符(header guard )。头文件保护符。原创 2023-06-07 22:43:59 · 785 阅读 · 0 评论