C++笔试强训15、16、17

文章目录

  • 笔试强训15
    • 一、选择题
      • 1-5题
      • 6-10题
    • 二、编程题
      • 题目一
      • 题目二
  • 笔试强训16
    • 一、选择题
      • 1-5题
      • 6-10题
    • 二、编程题
      • 题目一
      • 题目二
  • 笔试强训17
    • 一、选择题
      • 1-5题
      • 6-10题
    • 二、编程题
      • 题目一
      • 题目二


笔试强训15

一、选择题

1-5题

在这里插入图片描述
共有派生下,派生类的成员函数只能访问基类的公有成员和保护成员,基类的私有成员不可以被访问。
故选C

详细的访问关系请参照下图:
在这里插入图片描述


在这里插入图片描述

  • 首先要明白一点C++中的结构体进行继承的时候默认继承方式是公有继承
  • 其次在构造函数和析构函数中不会发生多态。

new了一个B类对象赋值给A类指针,由于B继承了A,所以会先调用A的构造函数,A的构造函数中执行了bar函数,构造函数中不发生多态,所以执行A的bar函数,输出bar。之后p->foo(),foo不是虚函数,不构成多态,所以父类指针指向foo只会执行父类的foo函数,输出foo。然后p->bar(),这次构成多态,执行B的foo函数,输出b_bar

故最后输出barfoob_bar,故选A


在这里插入图片描述
ABC属于纯虚函数即和抽象类的基本知识,不做过多解释。
关于D,纯虚函数是可以有函数体的,如下图所示,编译器正常运行,无报错。

故选D。
在这里插入图片描述


在这里插入图片描述
首先要了解派生类B,是有自己的虚表的,p调用test之后,test在父类中是个虚函数,而且派生类B没有重写它,所有就会去调用父类A的test函数,test函数中会调用func函数,func函数也是个虚函数,而且子类B重写了该虚函数,那么虚表中A::func的地址就会被B::func的地址覆盖,所以就只能去调用B的func函数,虽然调用的是B的func函数,但实际上使用的缺省参数还是A中func给的缺省参数0,所以就会输出B->1

上面说的是发生多态的过程,这里有个疑问就是,多态要发生不是得父类的指针或者引用接收子类的对象嘛?这里父类函数调用了func,却发生了多态。 原因是父类test函数中是有this指针的,this指针是父类类型的,但它实际上的指向是子类的,所以就会发生多态了。
在这里插入图片描述

故选B。
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
A* p=&a,没发生多态,只会调用A的foo和fun,输出12,然后p=&b,B重写了A的fun函数,构成多态,故调用B的fun函数,foo函数在A中不是虚函数,所以父类指针只会调用A的foo,故输出14,最后三行和A* p=new B没区别,还是输出14
故最终输出121414,故选B。


6-10题

在这里插入图片描述
没有用父类的指针或者引用来接收,所以不会形成多态,所以b.x只会调用B自己的x函数。
故选B。


在这里插入图片描述

B:在C++中,如果基类中的某个函数被声明为虚函数,那么在派生类中对应的函数(即重写的函数)自动成为虚函数,即使没有在派生类中显式地将其声明为虚函数,故B错

选B。


在这里插入图片描述
A:virtual和void的前后顺序不对
C,D:没有=0

只有B对,故选B


在这里插入图片描述
在派生类中声明虚函数,但是基类的同名函数却没有声明为虚函数,这样是构不成多态的,题目本意可能是想要构成多态,然后输出B,但没有构成多态,实际输出的是A,因此可以选B,不符合预期的输出A。

但实际上,当你把这段代码复制粘贴到编译器上去运行的时候,输出A之后就会报错,停止运行的,所以其实实际上C也不正确,这里只能说题目不严谨了。这里出错的原因是当一个类中有虚函数的时候,在类的开始部分就会有一个vfptr指针,指向虚函数表(具体是不是在类的开始部分存vfptr取决于编译器,不同编译器可能实现会有区别。)。B中有虚函数所以会有这个vfptr的位置,但A没有虚函数,所以也就不会有vfptr这个位置,因此当A类指针接收B类对象的时候,在delete时候就会出问题。

解决方法就是A中的函数也有一个虚函数就好了。

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
new一个C,会调用C的构造函数,因为C继承了A,和B,所以,根据继承的顺序,先调用A的构造函数,再调用B的构造函数,最后调用C的构造函数,依次输出A B C,之后delete a,只会调用A的析构函数,所以只会输出delA。值得注意的是,这里会造成内存泄漏,会造成B和C的资源没有释放,只需要把基类的析构函数声明为虚函数就好了。

故选A。


二、编程题

题目一

题目链接:

查找输入整数二进制中1的个数
在这里插入图片描述

提交代码:
法1:

#include <iostream>
#include <bitset>
using namespace std;int main() {int n;while (cin >> n) { // 注意 while 处理多个 casebitset<32> b(n);cout<<b.count()<<endl;}
}
// 64 位输出请用 printf("%lld")

法2:

#include<iostream>
using namespace std;int Count(size_t value) {int count = 0;while (value) {value &= (value -1); //表达式只跟1的个数有关系,跟1所在的位置无关count++;}return count;
}int main() {size_t value; //unsigned intint one_count = 0;while (cin >> value) {one_count = Count(value);cout << one_count << endl;}return 0;
}

运行结果:
在这里插入图片描述


题目二

题目链接:
手套
在这里插入图片描述
在这里插入图片描述

提交代码:

#include <climits>
class Gloves {public:int findMinimum(int n, vector<int> left, vector<int> right) {int left_sum = 0, left_min = INT_MAX;int right_sum = 0, right_min = INT_MAX;int sum = 0;for (int i = 0; i < n; i++) {if (left[i]*right[i] == 0) {sum += (left[i] + right[i]);} else {left_sum += left[i];left_min = left_min < left[i] ? left_min : left[i];right_sum += right[i];right_min = right_min < right[i] ? right_min : right[i];}}return sum + min(left_sum - left_min + 1, right_sum - right_min + 1) + 1;}
};

运行结果:


笔试强训16

一、选择题

1-5题

在这里插入图片描述
基类指针接收子类对象,第一个printf里100被强转为char类型的,所以会调用char版本的Bar函数,又因为父类char版本的Bar函数没声明为虚函数,所以不会构成多态,直接调用父类的char函数,输出强转int后的100.
之后下一个printf,调用int版本的Bar函数,这个Bar函数被重写了,所以构成多态,调用子类的int版本Bar函数,输出100/2,即50.

故选100 50,B。


在这里插入图片描述
A:虚函数不能是一个static函数,static函数没this指针,但是要调用虚函数是需要this指针的,A错
B:派生类重写的父类的虚函数,这俩函数必须名字,返回值和参数类型,顺序都保持一致。B错
C:虚函数是一个成员函数,C错。
D: 基类中声明虚函数后,基类中重写了虚函数不需要前面加virtual,因为继承了父类的虚函数属性。D对。

故选D。


在这里插入图片描述
这里,这个类中如果没有虚函数的话,就会输出100,200,但是这个类中有个虚函数,那么在类内存的首部就会存在一个 指向虚表的指针_vfptr ,之后才是a和b,所以强转为int* 之后相当于把前4个字节修改成了100,同时意味着找不到虚表了,所以构不成多态了,然后把第二个4个字节修改成了200,也就是把a修改成了200,而b还是10.
所以最后会输出200 ,10

故选A。

在这里插入图片描述


在这里插入图片描述
当父类某个函数是虚函数时,所有继承该类的派生类中同原型函数会继承父类该函数的虚函数属性,都是虚函数。

故选D。


在这里插入图片描述

ABD都对,不做过多解释
C:通过上下文,父类指针如果指向的是派生类对象的话就会形成多态,调用子类的方法。故C错

故选C。


6-10题

在这里插入图片描述
B是私有继承A的,所以A的print函数在B中就是私有的,C又公有继承了B,但是C中是访问不了B中的私有函数的,所以会编译出错。

故选C。


在这里插入图片描述
A:指针可以指向nullptr,故A错
B:子类指针可以指向父类实例,只不过是需要强转一下。
C:引用声明时必须初始化,所以任何引用必须指向一个实例。C对
D:int* p=mew int(10); int* & pp=p,当delete p之后pp所指向的示例就是无效的,故D错

故选C。


在这里插入图片描述
ABD不做过多解释

C:模板和运行时多态没关系,C错

故选C


在这里插入图片描述
在这里插入图片描述
pa是父类指针指向子类对象,分析时注意多态,pa2是父类指针指向父类对象。
pa->FuncA(),这里父类不是虚函数,不构成多态调用父类的FuncA函数,输出FuncA called
pa->FuncB(),这个被子类重写了,构成多态,调用子类的FuncB,输出FuncBB called
pa2->FuncA(),没多态直接执行父类的FuncA,输出FuncA called
pa2->FuncB(),也没多态,调用父类地FuncB,输出FuncB called

故选B。


在这里插入图片描述
在这里插入图片描述
首先父类指针指向子类对象,注意多态

pstBase->foo(100),调用参数int类型的函数,父类中该函数被virtual修饰,子类中完成了重写,故形成多态,调用的是子类的foo函数,返回值是100*2=200.

pstBase->foo(x),调用的显然是参数数组类型的函数,虽然子类声明为虚函数,但是父类没声明为虚函数,故不够成多态,调用父类的foo函数,这里调用了sizeof(x),因为是32位下,所以算出来的值是4,4+10=14,所以最后是2000+14=2014。

有人这里会疑问,在这里x是x[10],sizeof算出来的大小不是10吗?,这里我们需要明确的是,在函数参数列表中的数组其实会退化成指针,例如char a[n],会退化成char* a,n是多少其实是无所谓的,所以在这里sizeof的时候就相当与求指针的大小了,还不懂的可以看下面的解释。

在这里插入图片描述
在C++中,sizeof操作符用于获取类型或变量所占的内存大小(以字节为单位)。当你看到在你的代码示例中sizeof的结果在main函数中和在func函数中对同一个类型的数组(char[10])调用时不同,这是因为在这两种情况下,sizeof操作的对象类型是不同的。

main函数中

char a[10];
cout << sizeof(a) << endl;

这里,a是一个具有10个元素的字符数组。因此,sizeof(a)会计算整个数组所占的内存大小,即10 * sizeof(char),由于char类型通常占用1个字节,所以结果是10字节。

func函数中

void func(char a[10])
{cout << sizeof(a) << endl;
}

尽管函数参数a被声明为char a[10],但在这里,a实际上被当作一个指向char类型的指针来处理。这是因为当数组作为函数参数传递时,它会被退化为指向数组首元素的指针。因此,sizeof(a)在这里实际上是计算指针的大小,而不是数组的大小。指针的大小取决于你的系统架构(通常是32位或64位),在32位系统上通常是4字节,在64位系统上通常是8字节。

总结

  • main函数中,sizeof(a)计算的是整个数组a的大小。
  • func函数中,sizeof(a)计算的是传递给函数的数组参数(实际为指针)的大小。

这就是为什么你看到两次sizeof的结果不同的原因。


二、编程题

题目一

题目链接:

完全数计算

在这里插入图片描述

提交代码:

#include <iostream>
using namespace std;bool iswanshu(int n) {int sum = 0;for (int i = 1; i < n; i++) {if (n % i == 0) {sum = sum + i;}}if (sum == n) {return true;}return false;}
int main() {int  n;while (cin >> n) {int sum = 0;for (int i = 2; i <= n; i++) {if (iswanshu(i)) {++sum;}}cout << sum;}
}
// 64 位输出请用 printf("%lld")

运行结果:

在这里插入图片描述


题目二

题目链接:
扑克牌大小

在这里插入图片描述

提交代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;string FindMax(const string& line) {if (line.find("joker JOKER") != string::npos)return "joker JOKER";int dash = line.find('-');
//分开两手牌string car1 = line.substr(0, dash);string car2 = line.substr(dash + 1);//获取两手牌的张数int car1_cnt = count(car1.begin(), car1.end(), ' ') + 1;int car2_cnt = count(car2.begin(), car2.end(), ' ') + 1;//获取两手牌的各自第一张牌string car1_first = car1.substr(0, car1.find(' '));string car2_first = car2.substr(0, car2.find(' '));if (car1_cnt == car2_cnt) { //两手牌的类型相同string str = "345678910JQKA2jokerJOKER";if (str.find(car1_first) > str.find(car2_first))return car1;return car2;}if (car1_cnt == 4) //说明是炸弹return car1;else if (car2_cnt == 4)return car2;return "ERROR";
}int main() {string line, res;while (getline(cin, line)) {res = FindMax(line);cout << res << endl;}return 0;
}

运行结果:
在这里插入图片描述


笔试强训17

一、选择题

1-5题

在这里插入图片描述
因为A是抽象类,所以是不能进行实例化的,A、B、C,三个选项都实例化了A,所以是错误的。
D:只是定义了一个A*类型的指针,在没new A之前是没实例化A的,所以D对

故选D。


在这里插入图片描述
虚函数不可以重载为内联。

故选B。


在这里插入图片描述
虚函数的作用是为了实现多态,A直接错。其他的不作过多解释。

故选A。


在这里插入图片描述
看下图:
在这里插入图片描述
所以最后会输出100 300 300 500。
故选C。


在这里插入图片描述
动态多态虚函数,静态多态函数重载,模板,常识,不过多解释。

故选D。


6-10题

在这里插入图片描述
动态联编简单理解就是运行时才确定要调用哪个函数,这不就是考多态吗?
所以题目问的就是什么时候能引发多态,毫无疑问是通过父类指针或引用接收子类对象去调用虚函数了。

故选B。


在这里插入图片描述
D:覆盖其实就是重写,要保证函数名,参数类型,个数,顺序和返回值都相同,故D错。其实语法上叫重写,底层原理叫覆盖,因为子类重写的虚函数地址把虚表上父类的虚函数地址覆盖了嘛,所以重写和覆盖是一个东西。

选D。

下面重点区分一下重载(Overloading)、重写(Overriding)、隐藏(Name Hiding)和覆盖(Covering,但更常见的是指重写,这里为了区分而提及)的关系和区别:

1. 重载(Overloading)

定义:在同一个作用域内,可以有多个同名函数,但这些函数的参数列表(参数的数量、类型或顺序)必须不同。重载是编译时多态的一种体现。

特点

  • 发生在同一个类中或同一作用域内(如命名空间)。
  • 函数名相同,但参数列表不同。
  • 返回类型可以相同也可以不同,但通常不用于区分重载函数。
  • 编译器根据函数调用时的参数类型和数量来确定调用哪个函数。

2. 重写(Overriding)

定义:在派生类中重新定义基类中的虚函数。当通过基类的指针或引用来调用该虚函数时,将调用派生类中的函数实现。

特点

  • 发生在基类和派生类之间。
  • 函数名、返回类型(协变返回类型除外)和参数列表必须完全相同。
  • 访问修饰符(如publicprotected)在派生类中不能比基类更严格。
  • 是实现多态性的关键机制之一,属于运行时多态。

3. 隐藏(Name Hiding)

定义:在派生类中定义一个与基类同名的非虚函数(包括静态函数、全局函数和成员函数)。此时,派生类版本的函数会隐藏基类中的同名函数,而不是重写它。

特点

  • 发生在派生类中。
  • 函数名相同,但不一定是虚函数,也不要求参数列表相同。
  • 隐藏与访问修饰符无关。
  • 通过基类的指针或引用调用时,仍然会调用基类中的函数(如果它是虚函数且未被重写)。
  • 隐藏是静态的,即在编译时就确定了调用哪个函数。

4. 覆盖(通常指重写,但这里作为区分)

说明:在面向对象编程的术语中,“覆盖”通常就是指“重写”(Overriding)。但在某些上下文中,特别是在讨论不同编程语言或框架时,“覆盖”可能有更具体的含义,比如某些特定的覆盖机制或行为。然而,在大多数讨论中,可以将“覆盖”视为“重写”的同义词。

总结

  • 重载:同一作用域内,函数名相同但参数列表不同。
  • 重写(或覆盖):派生类中重新定义基类的虚函数。
  • 隐藏:派生类中定义与基类同名的非虚函数,导致基类中的同名函数被隐藏。
  • 覆盖:通常指重写,但在某些上下文中可能有更具体的含义。

在这里插入图片描述
选B,多态常识,不过多解释。


在这里插入图片描述
这里需要明确的是在构造函数和析构函数中是不会形成多态的,其次是构造的时候,先执行父类的构造函数,再执行子类的构造函数,析构的时候,先执行子类的析构函数,再执行父类的析构函数,满足先构造的后析构,后构造的先析构的规则。

故本题中先调用父类构造,由于构造函数不发生多态,所以执行父类p函数,输出A,再执行子类构造函数,执行子类p函数,输出B,析构函数反过来,先输出B后输出A。故最后输出ABBA。

故选D。


在这里插入图片描述
这个题目和第九题考的知识点是一样的,构造函数不会发生多态,先执行父类构造函数,执行echo,输出Base,后执行子类构造函数执行echo,输出Derived,最后base->echo()构成多态,输出Derived

故选D。


二、编程题

题目一

题目链接:

杨辉三角的变形

在这里插入图片描述

提交代码:

#include <iostream>
#include<string>
using namespace std;
int main(int argc, char* argv[]) {int nRow = 0;while (cin >> nRow) {int res = -1;int myInt[] = {4, 2, 3, 2};if (nRow > 2)res = myInt[(nRow - 2) % 4];cout << res << endl;}return 0;
}

运行结果:

在这里插入图片描述


题目二

题目链接:
计算某字符出现次数

在这里插入图片描述

提交代码:

#include <iostream>
#include <string>
using namespace std;int main() {string input;char s, m;getline(cin, input);cin >> s;m = s;if ('A' <= s <= 'z') {if ('A' <= s && s <= 'Z')m = s + 32;else if ('z' >= s && s >= 'a')m = s - 32;int count = 0;int length = input.size();for (int i = 0; i < length; i++) {if (input[i] == s || input[i] == m) {count++;}}cout << count << endl;}return 0;
}

运行结果:
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148911.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘智能派单流程:如何利用AI实现高效的自动化任务分配?

前言 在当今的企业管理和服务行业中&#xff0c;高效的工作分配与任务管理是提升企业竞争力的重要因素。智能派单流程通过结合先进的算法和人工智能技术&#xff0c;实现了工作任务的自动化分配和优化管理&#xff0c;不仅帮助企业提升了工作效率&#xff0c;降低了运营成本&a…

Kubernetes强制删除terminating状态的namespace

Kubernetes中的Namespace处于Terminating状态并且常规删除不起作用。 1.Namespace长时间处于Terminating状态往往是因为某些finalizers阻止了它的删除。 kubectl get namespace <namespace-name> -o json > namespace.json 2.编辑生成的 namespace.json文件&#xff…

在 Vue 3 中实现“折叠”与“展开”文本内容

偶然间遇到一个场景&#xff0c;怎么判断一段文本是否超过 5 行或者指定行数&#xff0c;并在超过时显示 "展开/收起" 按钮。那应该如何实现呢&#xff1f; 在 Vue 3 的项目下实现&#xff1a; <template><div class"text-container"><di…

计算机毕业设计 学院网站系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Java框架学习(Spring)(ioc)(01)

简介&#xff1a;以本片记录在尚硅谷学习ssm-spring-ioc时遇到的小知识 详情移步&#xff1a;想参考的朋友建议全部打开相互配合学习&#xff01; 视频&#xff1a; 014-spring-框架概念理解_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1AP411s7D7?p14&vd_sou…

【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题九

某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenStack搭建企业内部私有云平台&#xff0c;开源Kubernetes搭建云原生服务平台&#xff0c;选…

GIS留学院校介绍-英国篇

看前须知 关于语言成绩要求&#xff1a; 通常英国院校的雅思成绩要求分为5个等级&#xff0c;标准分别如下&#xff1a; 1级&#xff1a;总分6.5分&#xff0c;每个部分最低6.0分 2级&#xff1a;总分7.0&#xff0c;每个部分至少6.5分 3级&#xff1a;总分7.0分&#xff…

2024年有什么开放式耳机推荐?盘点开放式蓝牙耳机排行榜前五名

​到了2024年&#xff0c;开放式耳机无疑成为了耳机市场的宠儿。它们的优势在于&#xff0c;不仅佩戴舒适&#xff0c;还能在保护听力的同时&#xff0c;让你保持对周围环境的警觉&#xff0c;这对于爱好户外探险的朋友来说&#xff0c;无疑是一个巨大的安全加分项。作为一名资…

(附源码)微信小程序的拼车设计-计算机毕设19413

微信小程序的拼车设计 摘 要 在微信小程序的拼车服务中&#xff0c;后端架构巧妙地运用了SSM&#xff08;Spring、SpringMVC、MyBatis&#xff09;框架&#xff0c;为用户带来了流畅、高效的体验。Spring框架作为整个系统的核心&#xff0c;不仅管理着业务逻辑&#xff0c;还通…

分布式光伏的发电监控

国拥有丰富的清洁可再生能源资源储量&#xff0c;积极开发利用可再生能源&#xff0c;为解决当前化石能源短缺与环境污染严重的燃眉之急提供了有效途径[1]。但是可再生能源的利用和开发&#xff0c;可再生能源技术的发展和推广以及可再生能源资源对环境保护的正向影响&#xff…

PCB生产,在钻咀和成品孔径之间,你会优先满足哪一项呢

高速先生成员--王辉东 曹梦总是说&#xff0c;人生如《忐忑》&#xff0c;虽然没有准确的歌词&#xff0c;却演绎的惊心动魄…… 她是工厂的工程评估员&#xff0c;对于PCB的热爱&#xff0c;就像拖拉机上山&#xff0c;轰轰烈烈&#xff0c;不知疲倦。 她一向秉承的原则是&…

Excel名字查重筛选,查找重复内容原来这么简单

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f50d; 在处理大量数据时&#xff0c;尤其是人员名单或客户信息时&#xff0c;确保没有重复的名字是非常重要的。在Excel中&#xff0c;有几种方法可以帮助我们快速查找和处理重复的名字。今天&#xff0c;我们将介绍…

[linux 驱动]块设备驱动详解与实战

目录 1 描述 2 结构体 2.1 block_device_operations 2.2 gendisk 2.3 block_device 2.4 request_queue 2.5 request 2.6 bio 3.7 blk_mq_tag_set 3.8 blk_mq_ops 3 相关函数 3.1 注册注销块设备 3.1.1 register_blkdev 3.1.2 unregister_blkdev 3.2 gendisk 结构…

算法思想之前缀和

前缀和&#xff1a;快速求出数组中某连续区间的和 一.一维前缀和(模板) 1.题目&#xff1a;【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 给定一个长度为n的数组a1,a2,....ana1​,a2​,....an​.&#xff0c;接下来有q次查询, 每次查询有两个参数l, r&#xff0c;对于每个…

打造你的专属主题-VitePress保姆级教程

本篇为vitepress系列教程&#xff0c;在开始前&#xff0c;若还不了解vitepress的小伙伴可以看一下以往文章&#xff1a; 不敲一行代码&#xff01;助你快速搭建属于自己的官网博客&#xff01;-VitePress保姆级教程 文章目录 VitePress主题配置准备自定义主题配置标题配置图标…

【软件文档资料】软件代码编写规范-交付文档支撑(Word原件)

&#xff08;一&#xff09;一开始就必须正确的使用规范 &#xff08;二&#xff09;简易性原则 &#xff08;三&#xff09;清晰性原则 &#xff08;四&#xff09;健壮性原则 &#xff08;五&#xff09;效率原则 软件资料清单列表部分文档清单&#xff1a;工作安排任务书&am…

visual studio 调试技巧

visual studio 调试技巧 概述 在使用visual studio 进行调试的时候&#xff0c;有几个调试方法很好用&#xff0c;这里做一些记录。 GTEST 单元测试 参考 VS2022创建C C GTEST工程 - Hello-FPGA - 博客园 (cnblogs.com) 内存查看 命令行测试动态库 附加到进程调试动态库 …

数造科技荣获“2024爱分析·数据智能优秀厂商”

近日&#xff0c;2024年第六届爱分析数据智能高峰论坛圆满举办。会议期间&#xff0c;“2024爱分析数据智能优秀厂商”榜单正式揭晓&#xff0c;数造科技凭借其卓越的技术创新能力与丰富的实践应用案例&#xff0c;脱颖而出&#xff0c;成功入选“数据智能优秀厂商”。 评选严苛…

青否数字人【电脑版】实景直播+视频直播正式发布!

9月份&#xff0c;我们团队去山东的多家直播基地、MCN 机构&#xff0c;和合作伙伴一起深入探讨了青否数字人在抖音直播的落地情况。 这一趟下来&#xff0c;收获满满&#xff0c;对青否数字人的下一步升级有了更清晰的规划。 今天&#xff0c;青否数字人电脑客户端迎来了大升级…

到底是谁配谁-《分析模式》漫谈33

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第二章有这么一句&#xff1a; The notion is that a person is responsible for the responsibilities of the post for the period of time that they are …