C++11 std::move的UT测试

2023-10-20 02:38
文章标签 c++ 测试 std ut move

本文主要是介绍C++11 std::move的UT测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文参考自C++11 std::move的UT测试

查看原文: 原文地址

给出C++代码涉及到静态变量Static, 右值引用std::move, gmock, gtest等相关内容。


1.   静态变量Static

1.1  Static类成员变量

#include <iostream>class StaticTest
{
public:void show() const {std::cout << age << std::endl;}void changeAge() {age = age + 1;}
private:static int age;
};int StaticTest::age = 1;int main()
{StaticTest test1;test1.show();test1.changeAge();test1.show();test1.changeAge();test1.show();return 0;
}

Static类成员变量独立于类对象存在,在类中的public、protected或private中存在都没有关系;

Static类成员变量独立于类对象存在,所有该类对象共同访问static变量,因此需要在类外初始化;

Static类成员变量存储在内存中的全局数据区,在声明它的整个文件中可见;



2.  右值引用和std::move

2.1 右值引用

#include <iostream>int main()
{double s1 = 3.14;double &r1 = s1;const double &r2 = s1;std::cout << s1 << " " << r1 << " " << r2 << std::endl;double &&m1 = 3.14;const double &n1 = 3.14;// double &n2 = 3.14;  error: cannot bind non-const lvalue reference of type 'double&' to an rvalue of type 'double'std::cout << m1 << " " << n1 << " " << std::endl;double p = 3.14;// double &&q = p;  error: cannot bind rvalue reference of type 'double&&' to lvalue of type 'double'std::cout << p << std::endl;double &&x = 3.14;// double &&y =x;  error: cannot bind rvalue reference of type 'double&&' to lvalue of type 'double'std::cout << x << std::endl;return 0;
}

左值相当于地址值,右值相当于数据值;

右值引用指向将要被销毁的对象;

不能将右值引用绑定到一个变量(左值),即使这个变量是右值引用类型;


2.2  std::move
#include <iostream>
#include <cstring>class WithoutMove
{

这篇关于C++11 std::move的UT测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244048

相关文章

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数