当前位置: 首页 > news >正文

指针权限,new与delete,类与对象,函数模板,类模板的用法

指针权限 用法

void Print(const char* SecretPointer)
{cout << "绝密指令为:";cout << SecretPointer << endl;
}void Change(int& number, int* const FixedPointer)
{cout << "更换站台数字为:";cin >> number;cout << *FixedPointer << endl;
}int main()
{char* SecretPointer_01 = (char*)malloc(sizeof(char) * 20);cout << "请输入绝密指令:";cin >> SecretPointer_01;const char* SecretPointer = SecretPointer_01;Print(SecretPointer);int number = 100;int* const FixedPointer = &number;cout << "原站台数字为:" << *FixedPointer << endl;Change(number, FixedPointer);return 0;
}

new与delete 用法

#include <iostream>
using namespace std;int* CreateSpace1(int*&  PointerOfSum1)
{PointerOfSum1 = new int(0);     // 1 return new int[5]{ 1,2,3,4,5 };     //  2
}void AddArray1(int*& PointerOfSum1, int*& PointerOfArray1)
{for (int i = 0; i < 5; i++){(*PointerOfSum1) += (*(PointerOfArray1 + i));}
}// class StupidPerson
{
public:StupidPerson(int IQ = 10):_IQ(IQ){}int GetIQ(){return _IQ;}
private:int _IQ;
};StupidPerson* CreateSpace2(int*& PointerOfSum2)
{PointerOfSum2 = new int(0);return new StupidPerson[5];    // 3
}void AddArray2(int*& PointerOfSum2, StupidPerson*& PointerOfArray2)
{for (int i = 0; i < 5; i++){(*PointerOfSum2) += ((*(PointerOfArray2 + i)).GetIQ());}
}//class SmartPerson
{
public:SmartPerson(int IQ = 100):_IQ(IQ){}~SmartPerson(){_IQ = 0;}int GetIQ(){return _IQ;}
private:int _IQ;
};SmartPerson* CreateSpace3(int*& PointerOfSum3)
{PointerOfSum3 = new int(0);return new SmartPerson[5]{ SmartPerson(),SmartPerson(101),SmartPerson(102) ,SmartPerson(99) ,SmartPerson(107) };   // 4
}void AddArray3(int*& PointerOfSum3, SmartPerson*& PointerOfArray3)
{for (int i = 0; i < 5; i++){(*PointerOfSum3) += ((*(PointerOfArray3 + i)).GetIQ());}
}int main()
{int* PointerOfSum1 = nullptr;int* PointerOfArray1 = CreateSpace1(PointerOfSum1);AddArray1(PointerOfSum1, PointerOfArray1);cout << "总和为:" << (*PointerOfSum1) << endl;delete PointerOfSum1;   // 5delete[] PointerOfArray1;    //  6//int* PointerOfSum2 = nullptr;StupidPerson* PointerOfArray2 = CreateSpace2(PointerOfSum2);AddArray2(PointerOfSum2, PointerOfArray2);cout << "IQ总和为:" << (*PointerOfSum2) << endl;delete PointerOfSum2;delete[] PointerOfArray2;//int* PointerOfSum3 = nullptr;SmartPerson* PointerOfArray3 = CreateSpace3(PointerOfSum3);AddArray3(PointerOfSum3, PointerOfArray3);cout << "IQ总和为:" << (*PointerOfSum3) << endl;delete PointerOfSum3;delete[] PointerOfArray3;//SmartPerson* ps = (SmartPerson*)malloc(sizeof(SmartPerson) * 10);cout << "内存池已经创建完成!" << endl;new(ps)SmartPerson(110);    //  7new(ps + 1)SmartPerson(103);cout << "第一个人智商为:" << ps->GetIQ() << endl;cout << "第二个人智商为:" << (ps + 1)->GetIQ() << endl;ps->~SmartPerson();   // 8(ps + 1)->~SmartPerson();return 0;
}

类与对象 用法

test.h#include <iostream>
using namespace std;class Country
{friend class Citizen;friend istream& operator>>(istream& cin, Country& country);friend ostream& operator<<(ostream& cout, const Country& country);
public://构造函数Country();//拷贝构造函数Country(const Country& other);//析构函数~Country();//赋值运算符重载Country& operator=(const Country& other);
private:char* _countryname;char* _capital;
};
//流插入运算符重载
istream& operator>>(istream& cin, Country& country);
//流提取运算符重载
ostream& operator<<(ostream& cout, const Country& country);//class Citizen
{friend int operator>(const Citizen& c1, const Citizen& c2);friend istream& operator>>(istream& cin, Citizen& citizen);friend ostream& operator<<(ostream& cout, const Citizen& citizen);
public://构造函数explicit Citizen(bool iscriminal = false);//拷贝构造函数Citizen(const Citizen& other);//析构函数~Citizen();//赋值运算符重载Citizen& operator=(const Citizen& other);//前置++运算符重载Citizen& operator++();//后置++运算符重载Citizen operator++(int);//普通运算符重载Citizen& operator-(int num);//静态成员函数static int GetTotalCitizen();//友元类的跨类访问void GetCountry();
private://成员变量char* _personalname;int _age;Country _nationality;bool _iscriminal;int _creditscore;const int _maxcreditscore;//类的静态区成员变量static int _totalcitizen;
};
//普通运算符重载
int operator>(const Citizen& c1, const Citizen& c2);
//流插入运算符重载
istream& operator>>(istream& cin, Citizen& citizen);
//流提取运算符重载
ostream& operator<<(ostream& cout, const Citizen& citizen);
//func.cpp#include "test.h"//Country类相关
Country::Country()
{_countryname = new char[20]{ '\0' };_capital = new char[20]{ '\0' };
}Country::Country(const Country& other)
{_countryname = new char[20]{ '\0' };_capital = new char[20]{ '\0' };memcpy(_countryname, other._countryname, sizeof(char) * 20);memcpy(_capital, other._capital, sizeof(char) * 20);
}Country::~Country()
{delete[] _countryname;delete[] _capital;
}Country& Country::operator=(const Country& other)
{if (&other != this){memcpy(_countryname, other._countryname, sizeof(char) * 20);memcpy(_capital, other._capital, sizeof(char) * 20);}return *this;
}istream& operator>>(istream& cin, Country& country)
{cin >> country._countryname >> country._capital;return cin;
}ostream& operator<<(ostream& cout, const Country& country)
{cout << country._countryname << " " << country._capital;return cout;
}//Citizen类相关
Citizen::Citizen(bool iscriminal):_age(0),_nationality(),_iscriminal(iscriminal),_creditscore(0),_maxcreditscore(100)
{_personalname = new char[20]{ '\0' };_totalcitizen++;
}Citizen::Citizen(const Citizen& other):_age(other._age), _nationality(other._nationality), _iscriminal(other._iscriminal), _creditscore(other._creditscore), _maxcreditscore(other._maxcreditscore)
{_personalname = new char[20]{ '\0' };memcpy(_personalname, other._personalname, sizeof(char) * 20);_totalcitizen++;
}Citizen::~Citizen()
{delete[] _personalname;_totalcitizen--;
}Citizen& Citizen::operator=(const Citizen& other)
{if (&other != this){_age = other._age;_nationality = other._nationality;_iscriminal = other._iscriminal;_creditscore = other._creditscore;memcpy(_personalname, other._personalname, sizeof(char) * 20);}return *this;
}Citizen& Citizen::operator++()
{if (_creditscore < _maxcreditscore){_creditscore++;}return *this;
}Citizen Citizen::operator++(int)
{Citizen tmp(*this);if (_creditscore < _maxcreditscore){_creditscore++;}return tmp;
}Citizen& Citizen::operator-(int num)
{if (_creditscore > 0){_creditscore -= num;if (_creditscore < 0){_creditscore = 0;}}return *this;
}int operator>(const Citizen& c1, const Citizen& c2)
{if (c1._creditscore > c2._creditscore){return 1;}else if (c1._creditscore < c2._creditscore){return 2;}else{return 0;}
}istream& operator>>(istream& cin, Citizen& citizen)
{cin >> citizen._personalname >> citizen._age >> citizen._nationality>> citizen._iscriminal >> citizen._creditscore;return cin;
}ostream& operator<<(ostream& cout, const Citizen& citizen)
{cout << citizen._personalname << " " << citizen._age << " " << citizen._nationality<< " " << citizen._iscriminal << " " << citizen._creditscore;return cout;
}int Citizen::GetTotalCitizen()
{return _totalcitizen;
}void Citizen::GetCountry()
{cout << _nationality._countryname << " " << _nationality._capital << endl;
}//类的静态区成员变量定义
int Citizen::_totalcitizen = 0;
//test.cpp#include "test.h"int main()
{Citizen Shen(0);cin >> Shen;cout << Shen << endl;Citizen Jun(Shen);cout << Jun << endl;Citizen Elon(0);cin >> Elon;cout << Elon << endl;cout << "此时人数:" << Citizen::GetTotalCitizen() << endl;return 0;
}

函数模板 用法

// test.h#include <iostream>
using namespace std;template <typename T>
void Swap(T& a, T& b)
{T tmp = a;a = b;b = tmp;
}template <typename T1, typename T2, typename T3>
void Print(const T1& a, const T2& b, const T3& c)
{cout << a << " " << b << " " << c << endl;
}
// test.cpp
#include "test.h"int main()
{int x = 1;int y = 2;char m = 'x';char n = 'y';cout << "交换前:" << endl;cout << x << " " << y << endl;cout << m << " " << n << endl;Swap(x, y);Swap(m, n);cout << "交换后:" << endl;cout << x << " " << y << endl;cout << m << " " << n << endl;//const char* pointer = "根据ASCII码表对应的(值/字符)为";char obj1 = 'A';int obj2 = 65;Print(obj1, pointer, obj2);Print<int, const char*, char>(obj1, pointer, obj2);     return 0;
}

类模板 用法

// test.h
#include <iostream>
using namespace std;template <typename T>
class Person
{friend istream& operator>>(istream& cin, Person<T>& person){cin >> person._name >> *(person._luckysymbol);return cin;}friend ostream& operator<<(ostream& cout, Person<T>& person){cout << person._name << " " << *(person._luckysymbol);return cout;}
public:Person();Person(const Person& other);~Person();Person& operator=(const Person& other);
private:char* _name;T* _luckysymbol;
};template <typename T>
Person<T>::Person()
{_name = new char[20]{ 0 };_luckysymbol = new T(0);
}template <typename T>
Person<T>::Person(const Person& other):_name(new char[20]{ 0 }), _luckysymbol(new T(0))
{memcpy(_name, other._name, sizeof(char) * 20);*_luckysymbol = *(other._luckysymbol);
}template <typename T>
Person<T>::~Person()
{delete _luckysymbol;delete[] _name;
}template <typename T>
Person<T>& Person<T>::operator=(const Person& other)
{if (&other != this){memcpy(_name, other._name, sizeof(char) * 20);*_luckysymbol = *(other._luckysymbol);}return  *this;
}
// test.cpp
#include "test.h"int main()
{Person<int> Shen;Person<char> Hu;Person<double> Ye;cin >> Shen >> Hu >> Ye;Person<int> Junyang(Shen);  Person<char> Yao;   Yao = Hu;   cout << Shen << endl;cout << Hu << endl;cout << Ye << endl;cout << Junyang << endl;cout << Yao << endl;return 0;
}

相关文章:

指针权限,new与delete,类与对象,函数模板,类模板的用法

指针权限 用法 void Print(const char* SecretPointer) {cout << "绝密指令为&#xff1a;";cout << SecretPointer << endl; }void Change(int& number, int* const FixedPointer) {cout << "更换站台数字为&#xff1a;";c…...

Unity——脚本与序列化

在介绍序列化之前&#xff0c;我们先来了解一下为什么要对数据进行序列化 数据序列化有以下几个主要的应用场景和目的&#xff1a; 1. 持久化存储&#xff1a;序列化可以将对象或数据结构转换为字节序列&#xff0c;使得其可以被存储在磁盘上或数据库中。通过序列化&#xff…...

NJ求职盘点

电子显示 集成电路 地平线 后摩智能 芯启源 自动驾驶 地平线 栖霞区兴智科技园 泊车、SLAM/3D算法工程师 https://wecruit.hotjob.cn/SU64819a4f2f9d2433ba8b043a/pb/social.html?currentPage1 后摩智能 栖霞区兴智科技园 视觉感知算法资深工程师 可以做自动驾驶前瞻性…...

01卡特兰数

卡特兰数跟排列组合很有关系&#xff0c;所以在看此文章前请掌握&#xff1a; 加法原理乘法原理A(m,n)计算公式及其原理C(m,n)计算公式及其原理 前言 今天您将会学习到基本的卡特兰数及其应用。 一、卡特兰数是什么&#xff1f; 卡特兰数&#xff08;Catalan number&#xff0…...

若依前端vue设置子路径

若依前端vue设置子路径 说明&#xff1a;本文档中以前后端分离版为例&#xff0c;版本为:3.8.6 一设置变量 在.env.development和.env.production 中定义一个变量如VUE_APP_PROJECT_IDENTIFIER # 项目标识字符 VUE_APP_PROJECT_IDENTIFIER admin二引用路径变量 ${process…...

Vue中使用pdf.js实现在线预览pdf文件流

以下是在Vue中使用pdf.js实现在线预览pdf文件流的步骤&#xff1a; 1. 安装pdf.js npm install pdfjs-dist2. 引入pdf.js 在需要使用的组件中&#xff0c;使用以下代码引入pdf.js&#xff1a; import pdfjsLib from pdfjs-dist3. 加载pdf文件流 使用pdf.js的getDocument()方…...

态、势、感、知与时空、关系

态势感知是一种通过收集、整合、分析和解释大量的时空数据&#xff0c;以获取关于特定领域、地区或事件的全面理解的过程。时空和关系在态势感知中扮演着非常重要的角色。 态&#xff1a;态指的是物体或系统所处的状态或状况。在不同的态下&#xff0c;物体或系统的性质、行为和…...

D. Paths on the Tree

Problem - 1746D - Codeforces 思路&#xff1a;先分析一下题意&#xff0c;根据第一条性质&#xff0c;每次只能够从1开始&#xff0c;而第二条性质则表明对于每个节点来说&#xff0c;经过这个节点的子节点的路径条数应该尽量均衡&#xff0c;最大值与最小值相差不能超过1&am…...

CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解

相信很多朋友都想知道&#xff0c; Cocos Creator 资源的定义&#xff1f; Cocos Creator 常见的资源包含哪些&#xff1f;Cocos Creator 资源的管理机制是什么样的&#xff1f; Cocos Creator 中所有继承自 Asset 的类型都统称资源 &#xff0c;例如&#xff1a;Texture2D、Sp…...

大数据课程L1——网站流量项目的概述整体架构

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解网站流量项目的案例概述; ⚪ 了解网站流量项目的数据埋点和采集; ⚪ 了解网站流量项目的整体架构; 一、网站流量项目概述 1. 背景说明 网站流量统计是改进网站服务的重要手段之一…...

提升数据库安全小技巧,使用SSH配合开源DBeaver工具连接数据库

title: 提升数据库安全小技巧&#xff0c;使用SSH配合开源DBeaver工具连接数据库 categories: 独立博客的方方面面 前段时间, 未来降低网址运行成本&#xff0c;搭了一套Mysql Docker 数据库, 包括外部链接&#xff0c;数据备份&#xff0c;数据导出&#xff0c;数据恢复一套解…...

信息安全技术概论-李剑-持续更新

图片和细节来源于 用户 xiejava1018 一.概述 随着计算机网络技术的发展&#xff0c;与时代的变化&#xff0c;计算机病毒也经历了从早期的破坏为主到勒索钱财敲诈经济为主&#xff0c;破坏方式也多种多样&#xff0c;由早期的破坏网络到破坏硬件设备等等 &#xff0c;这也…...

java项目基于 SSM+JSP 的人事管理系统

java项目基于 SSMJSP 的人事管理系统 博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 大家好&#xff0c;今天和大家聊的是 Java 基于 SSM 的人事管理系统。…...

【Node.js】—基本知识点总结

【Node.js】—基本知识总结 一、命令行常用操作 二、Node.js注意点 Node.js中不能使用BOM和DOM操作 总结 三、Buffer buffer是一个类似于数组的对象&#xff0c;用于表示固定长度的字节序列buffer的本质是一段内存空间&#xff0c;专门用来处理二进制数据 特点&#xff1a;…...

Leetcode.174 地下城游戏

题目链接 Leetcode.174 地下城游戏 hard 题目描述 恶魔们抓住了公主并将她关在了地下城 d u n g e o n dungeon dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公…...

python实现adb辅助点击屏幕工具

#!/usr/bin/env python # -*- coding: utf-8 -*-import re import os import time import subprocess import tkinter as tk from tkinter import messagebox from PIL import Image, ImageTk# 设置ADB路径&#xff08;根据你的系统和安装路径进行调整&#xff09; ADB_PATH C…...

智能合约安全分析,针对 ERC777 任意调用合约 Hook 攻击

智能合约安全分析&#xff0c;针对 ERC777 任意调用合约 Hook 攻击 Safful发现了一个有趣的错误&#xff0c;有可能成为一些 DeFi 项目的攻击媒介。这个错误尤其与著名的 ERC777 代币标准有关。此外&#xff0c;它不仅仅是众所周知的黑客中常见的简单的重入问题。 这篇文章对 …...

nodejs 爬虫 axios 异步爬虫 教程 【一】

axios 自定义headers axios.defaults.headers.common["User-Agent"] "Googlebot/2.1 (http://www.google.com/bot.html)"; 运行环境&#xff1a; node &#xff1a;v18 const axios require("axios"); axios.defaults.headers.common["U…...

Swift学习笔记三(Dictionary 篇)

1 Dictionary 概念 字典储存无序的互相关联的同一类型的键和同一类型的值的集合。字典类型的全写方式 Dictionary<Key, Value>&#xff0c;简写方式 [Key: Value]&#xff0c;建议使用简写方式。字典的 key 必须是可哈希的。 2 Dictionary创建 2.1 初始器创建方式 2.2 …...

javax.mail 遇到501 mail from address must be same as authorization user 的問題

使用不同的兩個帳戶发送email时&#xff0c;第一个账户可以发送成功&#xff0c;但到第二个账户的时候就报出了501 mail from address must be same as authorization user的错误。 具体代码如下&#xff1a; import java.util.Date; import java.util.List; import java.util.…...

【Python】网络编程

Socket Socket (简称 套接字)是进程之间通信一个工具&#xff0c;进程之间想要进行网络通信需要socket。Socket负责进程之间的网络数据传输&#xff0c;好比数据的搬运工。 客户端和服务端 2个进程之间通过Socket进行相互通讯&#xff0c;就必须有服务端和客户端 Socket服务…...

客户端开发常用框架

在Unity游戏开发中&#xff0c;客户端常用的框架包括以下几种&#xff1a; 1.Unity的网络框架&#xff1a;Unity自带了网络框架&#xff0c;包括Unity Networking、Unity Matchmaker和Unity Remote等。这些框架可以帮助我们进行游戏的联机对战、排行榜、跨平台等功能的设计和实…...

数据分析综述

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…...

区块链技术与应用 - 学习笔记2【密码学基础】

大家好&#xff0c;我是比特桃。本系列笔记只专注于探讨研究区块链技术原理&#xff0c;不做其他违反相关规定的讨论。 区块链技术已被纳入国家十四五规划&#xff0c;在“加快数字发展 建设数字中国”篇章中&#xff0c;区块链被列为“十四五”七大数字经济重点产业之一&#…...

制作Linux发行版安装镜像:复刻centos镜像安装ISO

制作Linux发行版安装镜像&#xff1a;复刻centos镜像安装ISO 我们平时经常下载Linux各个发行版&#xff0c;下载ISO&#xff0c;安装使用。那么ISO到底是如何制作的&#xff1f;安装过程是什么原理&#xff1f; 近来打算讲镜像制作的过程、原理&#xff0c;通过一个专栏分享一…...

【复习socket】每天40min,我们一起用70天稳扎稳打学完《JavaEE初阶》——29/70 第二十九天

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示:思路以及想法★✔   如果大家觉得有帮助的话,感谢大家帮忙 点…...

postgresql-常用数学函数

postgresql-常用数学函数 案例 案例 --求余 1 select 5%2 as t; --绝对值 17.4 select abs(-17.4) as t2; -- 大于等于最小整数 -42 select ceil(-42.8) as t3; -- 小于等于的最大整数 42 select floor(42.3) as t4; -- 四舍五入 44 select round(43.6) as t5; -- 向零取整 12…...

Docker实战技巧(一):常用命令与最佳实践

一、原理   1、Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层&#xff0c;可允许多个操作系统和应用共享一套基础物理硬件&#xff0c;它能直接访问物理设备&#xff0c;会给每一台虚拟机分配内存、CPU、网络、磁盘等资源&#xff0c;也可以确保虚拟机对应的硬…...

使用CUDA计算GPU的理论显存带宽

文章目录 一、显存带宽和理论显存带宽1. 显存带宽2. 理论显存带宽1&#xff09;计算公式2&#xff09;举例 二、利用CUDA计算理论显存带宽 一、显存带宽和理论显存带宽 1. 显存带宽 显存带宽是指显存和GPU计算单元之间的数据传输速率。 显存带宽越大&#xff0c;意味着数据传…...

npm install依赖冲突解决办法

今天npm的时候发现报错&#xff0c;原来是依赖冲突了 npm后面加上这个指令就可以顺利的安装依赖了。问题主因就是不同开发用了不同版本node导致依赖版本不同&#xff0c;出现了成功冲突&#xff0c;这是段指令&#xff1b;它告诉npm忽略项目中引入的各个依赖模块之间依赖相同但…...

如何制作推广网站/开网店如何运营和推广

这是我写的旋风式的编程语言简介 —— 我本来为亚马逊开发者杂志本月的期刊写的&#xff0c;但是发现我写的东西没法见人。 首先&#xff0c;我偶尔一不小心口出脏话&#xff0c;或者对上帝不恭的话&#xff0c;所以在很官方很正式的亚马逊上发表是不合适的&#xff1b; 所以我…...

电子商务网站的建设包含哪些流程/网络免费推广平台

数据库三范式&#xff1a; 1.必有主键&#xff0c;各个字段原子性不可再分。 2.在1之上要求所有非主键完全依赖主键。 3.在2之上要求所有非主键直接依赖主键 五种约束&#xff1a;主键、唯一、非空、默认、外键。 首先创建两张表&#xff0c;一张主表&#xff0c;一张从表&…...

加大政府网站建设/微信营销的方法有哪些

故障存储&#xff1a;WD2500AAJS-75M0A0 故障现象&#xff1a;加电后敲盘&#xff0c;电机停转 故障分析&#xff1a; 和用户沟通中得知此盘为DELL机器原装盘&#xff0c;正常开机使用过程中受外力机箱从桌子上摔下来&#xff0c;用户已经尝试把硬盘挂载到USB接口上进行读取的操…...

天津北京网站建设公司哪家好/厦门百度竞价推广

APScheduler简介 APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务&#xff1a;固定时间间隔&#xff0c;固定时间点&#xff08;日期&#xff09;&#xff0c;Linux 下的 Crontab 命令。同时&#xf…...

胶南网站建设价格/seo的工作原理

【辰兮要努力】&#xff1a;hello你好我是辰兮&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新Java前端、后台、…...

企业网站建设实训报告/网络代理app

Flutter中TDD的优势对单元测试非常好的支持是选择Flutter的一个重要原因。因为这是保证TDD流畅进行的重要基础。Flutter中单元测试的优势主要有两个方面&#xff1a;1、运行速度快。Flutter的测试代码运行速度非常快&#xff0c;基本是几秒最慢十几秒就开始运行。我们TDD中需要…...