C++基础学习
文章平均质量分 60
自我学习C++的基本语法等
wangwl1998
这个作者很懒,什么都没留下…
展开
-
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 · 667 阅读 · 0 评论 -
constexpr简单示例
的使用有一些限制和规则,例如函数体内只能有一个返回语句、初始化表达式必须是常量表达式等。修饰函数、变量和构造函数时,可以在编译时进行常量计算和优化。的用法,它使得在编译时进行常量计算和优化成为可能,提高了程序的性能和效率。由于该调用在编译期间就可以确定结果,所以它可以用作编译时常量。函数使用递归计算给定数字的阶乘,并返回结果。计算给定整数的平方,并返回结果。获取圆的面积,其计算在编译时进行。,允许在编译时对其进行求值。,允许在编译时构造对象。在这个例子中,我们定义了一个。,可以在编译时求值。原创 2023-07-01 14:16:41 · 117 阅读 · 0 评论 -
C++之vector的简单使用
vector 的底层实现是基于数组和指针,它采用了动态内存分配的方式来实现可变长度。vector 内部一般包含三个指针:指向第一个元素的指针、指向最后一个元素的指针、以及指向当前分配的内存空间末尾的指针。在 C++ 中,vector 是一种动态数组(Dynamic Array)容器,它可以存储任意类型的数据,并且支持快速随机访问、尾部插入/删除等操作。总之,vector 是 C++ 中非常重要的容器类,它具有灵活性高、可扩展性好等优点,并且在实现上较为简单易懂。原创 2023-03-26 13:11:35 · 103 阅读 · 0 评论 -
C++之左值和右值以及std::move()
当我们进行复制操作时,需要分配新的内存空间,并将原有的字符串数据复制到新的内存空间中,这会消耗大量的时间和内存。总之,std::move() 是 C++11 中非常重要的一个函数,它可以实现移动语义,提高程序的性能。但是,在使用 std::move() 时需要注意一些细节,尤其是对于被移动对象的状态要进行合理的处理。在这个示例中,obj1 在进行 std::move() 操作后,它的状态将变为无效,即不能再访问其中的数据。在这个例子中,x 是一个左值,std::move(x) 返回一个对应的右值引用 y。原创 2023-03-26 13:06:21 · 139 阅读 · 0 评论 -
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 · 77 阅读 · 0 评论 -
C++虚函数
【代码】C++虚函数。原创 2023-03-26 12:54:59 · 43 阅读 · 0 评论 -
回调函数C++,C语言
在main函数中,我们将callback函数的地址赋值给callbackPtr函数指针,然后将该函数指针作为参数传递给doSomething函数。以下是一个简单的示例,其中定义了一个函数指针类型CallbackFunc,并在main函数中将回调函数callback的地址赋值给该函数指针,最后在doSomething函数中通过该函数指针调用回调函数。当我们需要在程序中使用回调函数时,我们需要定义一个函数指针类型,然后将回调函数的地址赋值给该函数指针,最后在需要调用回调函数的地方通过该函数指针调用回调函数。原创 2023-03-26 12:49:18 · 53 阅读 · 0 评论 -
C++学习之继承inherit
继承的自我学习总结原创 2022-10-16 20:19:45 · 414 阅读 · 0 评论