- 博客(29)
- 收藏
- 关注
原创 std::dynamic_pointer_cast
它依赖于运行时类型信息(RTTI),并且只有在转换成功时才会返回一个有效的。的详细介绍,包括其用法、行为和注意事项。通过理解其行为和限制,你可以更有效地使用。是 C++ 标准库中用于安全类型转换。是一个安全的类型转换工具,专门用于。如果转换失败,它会返回一个空指针。以下是一个完整的示例,展示。来编写安全、可靠的代码。
2025-04-02 21:57:11
259
原创 远程仓库中不存在名为origin/lesson5的分支
如果远程分支不存在,你可以创建一个新的远程分支或切换到一个已有的远程分支。如果远程分支存在,但本地没有跟踪它,可以设置跟踪信息或直接拉取内容。
2025-03-30 22:29:46
318
原创 CMake中set(CMAKE_CXX_FLAGS_DEBUG “-g -O0 -DDEBUG“)引发问题
在使用 CMake 构建项目时,如果在文件中定义了DEBUG宏,并且代码中存在同名的枚举值或变量,会导致编译错误。这种冲突通常表现为编译器无法正确解析代码中的DEBUG标识符。通过以下方法可以避免DEBUG取消定义DEBUG宏:在包含冲突的头文件之前取消定义DEBUG宏。重命名枚举值:将代码中的枚举值DEBUG重命名为其他名称。避免定义DEBUG宏:在 CMake 中不定义DEBUG宏,使用其他标志来启用调试功能。
2025-03-30 20:14:28
292
原创 关键字之noexcept
noexcept是 C++11 引入的一个关键字,用于指定一个函数不会抛出任何异常。如果被标记为noexcept的函数抛出了异常,程序将调用函数来终止程序执行。
2025-03-26 20:35:57
267
原创 关键字之explicit
explicit关键字用于防止隐式的单参数构造函数调用,确保只有显式的构造函数调用才会创建类的对象。这有助于提高代码的安全性和可读性,避免意外的类型转换。
2025-03-25 21:16:16
136
原创 调用Python脚本指定函数
本文介绍调用模块下的函数。简单展示调用module2中函数。调用module2中函数,其函数同时使用Test_Class中的类。
2024-11-06 20:49:29
388
原创 inline使用
关键字在 C++ 中具有多种用途,主要用于函数和变量。它的主要作用是控制链接(linkage)和优化(optimization)。下面详细解释 的作用及其在不同场景下的应用。消除函数调用开销:编译器在函数被声明为 时,可能会将函数体直接嵌入到每个调用点,从而避免函数调用的开销(如栈帧的创建和销毁)。允许在多个翻译单元中定义: 函数可以在多个源文件中定义,只要这些定义完全相同。编译器和链接器会确保只保留一个实例,避免重复定义错误。小型、频繁调用的函数:如简单的访问器函数(getter)、设置器函数(set
2024-09-18 13:29:10
414
原创 动态绑定(运行时绑定)
在C++中,(Dynamic Binding),又称为,是指程序在根据对象的实际类型来决定调用哪个函数的机制。它主要与virtualfunctions)和(polymorphism)相关。
2024-09-17 19:05:17
544
原创 shared_ptr循环引用问题
weak_ptr是C++标准库中智能指针的一种类型,用于解决循环引用问题和避免悬挂指针(dangling pointer)的情况发生。与shared_ptr不同,weak_ptr并不拥有所指向对象的所有权,它只是对被管理对象的一个观察者。解决循环引用问题:当两个或多个对象相互持有对方的shared_ptr时,形成循环引用。这种情况下,对象的引用计数永远不会变为0,导致内存泄漏。通过使用weak_ptr可以打破循环引用,避免内存泄漏的发生。代码见上面示例;weak_ptr允许你观察由shared_ptr。
2023-07-01 22:50:11
810
原创 C++之&&和&区别
都是引用类型,但它们具有不同的语义和用法。左值引用(Lvalue reference)是指绑定到左值(Lvalue)的引用类型,通常使用。右值引用(Rvalue reference)是指绑定到右值(Rvalue)的引用类型,通常使用。左值是指可以取地址并且具有持久性的表达式,例如变量、数组元素、成员变量等等。都是引用类型,但它们具有不同的语义和用法。,它接受一个右值引用类型的参数,并输出该参数的值。是一个通用引用类型,可以同时接受左值引用和右值引用。在上面的示例代码中,我们定义了一个函数。
2023-04-04 09:59:20
5154
原创 完美转发&&std::forward()
完美转发是一种 C++ 技术,用于在函数模板中精确地将参数传递到另一个函数,同时保留原始参数的类型信息和左右值属性。它是通过使用通用引用(也称为万能引用)和函数来实现的。通常情况下,在编写函数模板时,我们需要将传递给函数的参数传递给另一个函数。在上面的代码中,我们定义了一个函数模板foo,其中的参数arg是一个模板参数类型,它会被传递给另一个函数bar,但是这样会丢失一些信息,例如参数的左右值属性、是否为 const 或 volatile 限定符等等。为了避免这种情况,可以使用通用引用和。
2023-04-04 09:50:42
232
原创 linux中如何生成.so文件并且使用
使用gcc编译器链接目标文件,并使用-shared选项生成共享库文件(.so文件)。在这个示例中,我们编写了一个名为main.cpp的程序,它将动态加载共享库libmylib.so,并调用其中的hello()函数。最后,我们将编译main.cpp程序,并链接动态加载库(libdl.so)以确保程序能够正确地调用dlopen和dlsym函数。注意:在编写共享库时,需要将导出的函数声明为“C”风格的函数,以便在其他程序中正确使用。我们将编写一个使用共享库的程序,该程序动态加载共享库并调用其中的函数。
2023-03-26 14:05:04
2439
原创 C++之vector的简单使用
vector 的底层实现是基于数组和指针,它采用了动态内存分配的方式来实现可变长度。vector 内部一般包含三个指针:指向第一个元素的指针、指向最后一个元素的指针、以及指向当前分配的内存空间末尾的指针。在 C++ 中,vector 是一种动态数组(Dynamic Array)容器,它可以存储任意类型的数据,并且支持快速随机访问、尾部插入/删除等操作。总之,vector 是 C++ 中非常重要的容器类,它具有灵活性高、可扩展性好等优点,并且在实现上较为简单易懂。
2023-03-26 13:11:35
123
原创 C++之左值和右值以及std::move()
当我们进行复制操作时,需要分配新的内存空间,并将原有的字符串数据复制到新的内存空间中,这会消耗大量的时间和内存。总之,std::move() 是 C++11 中非常重要的一个函数,它可以实现移动语义,提高程序的性能。但是,在使用 std::move() 时需要注意一些细节,尤其是对于被移动对象的状态要进行合理的处理。在这个示例中,obj1 在进行 std::move() 操作后,它的状态将变为无效,即不能再访问其中的数据。在这个例子中,x 是一个左值,std::move(x) 返回一个对应的右值引用 y。
2023-03-26 13:06:21
165
原创 C++多态性(polymorphism)
在这个示例中,我们使用虚函数实现了多态性。从Shape派生出了一个Circle类,并且在Circle类中重新定义了draw函数。然后,我们通过Shape指针来调用Circle对象,这样就可以执行Circle中的draw函数了。在这个示例中,我们定义了一个Animal基类和一个Dog派生类,并且在Dog类中重新定义了makeSound函数。在这个示例中,我们定义了一个Shape基类,其中包含一个纯虚函数draw。然后,我们从Shape派生出了一个Circle类,并且在Circle类中实现了draw函数。
2023-03-26 12:58:39
113
原创 回调函数C++,C语言
在main函数中,我们将callback函数的地址赋值给callbackPtr函数指针,然后将该函数指针作为参数传递给doSomething函数。以下是一个简单的示例,其中定义了一个函数指针类型CallbackFunc,并在main函数中将回调函数callback的地址赋值给该函数指针,最后在doSomething函数中通过该函数指针调用回调函数。当我们需要在程序中使用回调函数时,我们需要定义一个函数指针类型,然后将回调函数的地址赋值给该函数指针,最后在需要调用回调函数的地方通过该函数指针调用回调函数。
2023-03-26 12:49:18
79
原创 2021-01-26题2001
问题描述输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。输入值输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。输出量对于每组输入数据,输出一行,结果保留两位小数。样本输入0 0 0 10 1 1 0样本输出1.001.41#include <stdio.h>#include <math.h>int main(){ double x,y,z,w,len; while(sc
2021-01-26 18:16:19
107
原创 2021-01-26题2000
问题描述输入三个字符后,按各个字符的ASCII码从小到大的顺序输出这三个字符。输入值输入数据有多组,每组占一行,有三个字符组成,之间无空格。输出量对于每组输入数据,输出一行,字符中间用一个空格分开。样本输入we阿斯x样本输出当量广告x#include <stdio.h>int main(){ char a,b,c,t,d; while(scanf("%c %c %c",&a,&b,&c) != EOF) {
2021-01-26 18:14:11
79
原创 2021-01-25 题2006
问题描述给你n个整数,求他们中所有奇数的乘积。输入值输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,然后是n个整数,你可以假设每组数据必定至少存在一个奇数。输出量输出每组数中的所有奇数的乘积,对于测试实例,输出一行。样本输入3 1 2 34 2 3 4 5样本输出315#include <stdio.h>int main(){ int n,sum,i,num; while(scanf("%d",&n)
2021-01-25 23:18:04
77
原创 2021-1-23Acmer题1001
问题描述嗨,欢迎来到HDOJ(杭州电子科技大学在线法官)。在此问题中,您的任务是计算SUM(n)= 1 + 2 + 3 + … + n。输入值输入将由一系列整数n组成,每行一个整数。输出量对于每种情况,在一行中输出SUM(n),然后输出空白行。您可以假设结果将在32位有符号整数的范围内。样本输入1个100样本输出1个5050#include <stdio.h>int main(){ int i,n,sum; while(scanf("%d",&
2021-01-23 19:49:59
395
原创 2021-1-23 Acmers题1000
问题描述计算A + B。输入值每一行包含两个整数一个和乙。处理到文件末尾。输出量对于每种情况,在一行中输出A +B。样本输入1 1样本输出2在这里插入代码片#include <stdio.h>int main(){ int a,b; while( scanf("%d %d",&a,&b)!=EOF) printf("%d\n",a+b); return 0;}...
2021-01-23 19:46:27
121
原创 2021-01-22Acmers题2005
问题描述给定一个日期,输出这个日期是该年的第几天。输入值输入数据有多组,每组占一行,数据格式为YYYY / MM / DD组成,具体可见样本输入,另外,可以向你确保所有的输入数据是合法的。输出量对于每组输入数据,输出一行,表示该日期是该年的第几天。样本输入1985/1/202006/3/12样本输出2071#include <stdio.h>#define ture 1#define fasle 0int PanDuanRunYue(int *year)
2021-01-22 00:06:06
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人