c++ 强引用 用法写个示例
时间: 2023-07-08 17:22:43 浏览: 54
在C++中,我们通常使用指针来实现强引用。以下是一个简单的示例:
```cpp
#include <iostream>
int main() {
// 创建一个整型变量,并用指针进行强引用
int* pInt = new int(42);
// 输出该变量的值
std::cout << "pInt points to: " << *pInt << std::endl;
// 释放指针所指向的内存
delete pInt;
return 0;
}
```
在上面的示例中,我们定义了一个指向整型变量的指针 `pInt`,该指针强引用了该变量。我们可以通过指针访问该变量,并且在不再需要该变量时,使用 `delete` 关键字释放指针所指向的内存。这样可以确保程序不会出现内存泄漏的情况。
相关问题
c++ 引用计数用法示例
当涉及到资源的共享和管理时,引用计数是一种常见的技术。在C++中,可以通过自定义类来实现引用计数。下面是一个简单的示例:
```cpp
#include <iostream>
class RefCounted {
private:
int count; // 引用计数
public:
RefCounted() : count(0) {}
void addRef() {
count++;
}
void release() {
count--;
if (count == 0) {
delete this; // 当引用计数为0时,释放对象内存
}
}
void printCount() {
std::cout << "引用计数:" << count << std::endl;
}
};
int main() {
RefCounted* obj1 = new RefCounted();
obj1->addRef();
obj1->printCount();
RefCounted* obj2 = obj1;
obj2->addRef();
obj2->printCount();
obj1->release();
obj1->printCount();
obj2->release();
obj2->printCount();
return 0;
}
```
在上面的示例中,`RefCounted` 类实现了一个简单的引用计数功能。通过 `addRef()` 方法增加引用计数,通过 `release()` 方法减少引用计数。当引用计数为0时,对象会被释放。
在 `main()` 函数中,我们创建了两个指向 `RefCounted` 对象的指针 `obj1` 和 `obj2`,并对它们进行了引用计数的增加和减少操作。最终,当引用计数为0时,对象会被自动释放。
输出结果如下:
```
引用计数:1
引用计数:2
引用计数:1
引用计数:0
```
这个示例演示了引用计数的基本用法,但在实际应用中,可能还需要考虑线程安全性、循环引用等问题。
c++ 写一个拉姆达表达式 示例
Lambda表达式是一种匿名函数,可以用于创建一个函数对象,可以在需要函数的任何地方使用。下面是一个示例Lambda表达式:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> vec{ 1, 2, 3, 4, 5 };
std::for_each(vec.begin(), vec.end(), [](int n){ std::cout << n << " "; });
// 输出:1 2 3 4 5
auto sum = [](int a, int b){ return a + b; };
std::cout << sum(3, 4); // 输出:7
return 0;
}
```
这个示例演示了如何使用Lambda表达式来迭代一个整数向量,以及如何使用Lambda表达式来定义一个简单的加法函数对象。Lambda表达式的基本语法是:
```c++
[capture-list](parameter-list) -> return-type { function-body }
```
其中,capture-list是捕获列表,用于捕获外部变量,parameter-list是参数列表,用于定义函数参数,return-type是返回类型,用于定义函数返回类型,function-body是函数体,用于定义函数操作。在上面的示例中,我们使用了两个不同的Lambda表达式。第一个Lambda表达式没有参数,捕获列表为空,函数体中使用了std::cout输出向量中的元素。第二个Lambda表达式有两个参数,捕获列表为空,函数体中使用了加法运算符来计算两个整数的和。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)