第9章 继承和派生习题(详解)

news2024/11/28 5:48:46

在这里插入图片描述

一、选择题

1.下列表示引用的方法中, () 是正确的。已知:int m=10:

A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;

在C++中,引用是一个变量的别名。正确的引用声明方式应遵循C++的引用规则。

选项分析:

A.`int &x=m;` 这是一个正确的引用声明。`x` 成为 `m` 的引用,`x` 和 `m` 指向同一内存位置。

B.`int &y=10;` 这是一个错误的引用声明。引用必须绑定到一个变量,不能直接绑定到字面值(如10)。

C.`int &z;` 这是一个错误的声明。引用在声明时必须被初始化。

D.`float &t=&m;` 这是一个错误的声明。首先,`&m` 获得的是变量 `m` 的地址,其类型是 `int*` 而不是 `float`。其次,`t` 应该直接绑定到一个 `float` 类型的变量,而不是一个地址。

因此,正确的选项是:

A.`int &x=m;`

2. 在以下类定义中, () 的虚基类

A)类B、类C是类A B)类A是类B、类C C)类B、类C是类D D)类A是类D

class A{
public: 
int x;
A(int a=0){x=a;}
 	};
class B:public virtual A
{ ... };
class C:virtual public A
{  ... };
class D:public B,public C
{   	A x; 
public: 
int m; 
D(int a,int b,int c):B(a),C(b),x(c)  //F
...
};
在C++中,如果一个基类被多个直接或间接派生类通过不同的路径继承,
并且这个基类在继承路径中至少有一次是作为虚基类来继承的,那么这个基类就是虚基类。
如果一个基类包含另一个基类的指针或引用,那么这个基类就被称为虚基类。 选D

3.C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过 (),派生出新的类。

A.复用 B.继承C.单继承 D.多继承

继承允许新的类接收(或继承)一个或多个类的成员(包括数据成员和成员函数)。
这是代码复用的一个主要手段。选B

4.继承具有 () ,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

A.规律性 B.传递性 C.重复性 D.多样性

B.传递性
这个特性确保了派生类能够从它的直接基类以及间接基类那里继承属性和方法,允许多层次的抽象和代码重用。

5.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则 () 。

A.完全相同 B.完全不同 C.部分相同,部分不同 D.以上都不对

在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性的规则与单继承中的规则是完全相同的。
无论是单继承还是多继承,
基类成员的访问控制(public, protected, private)都遵循相同的规则。因此,正确的答案是:
A.完全相同
公有继承(public inheritance)意味着基类的公有成员和保护成员在派生类中保持原有的访问权限,
而私有继承(private inheritance)意味着基类的所有成员在派生类中都变成了私有成员,
无论它们在基类中原来是什么访问权限。

6.派生类的构造函数的成员初始化列表中,不能包含 。

A.基类的构造函数 B.派生类中子对象的初始化
C.基类的子对象初始化 D.派生类中一般数据成员的初始化

在派生类的构造函数的成员初始化列表中可以包含以下元素:
A. 基类的构造函数 - 派生类的构造函数可以(并且在多数情况下应该)
在其成员初始化列表中调用基类的构造函数,以确保基类部分被正确初始化。
B. 派生类中子对象的初始化 - 如果派生类有类类型的成员(子对象),
则可以(也应该)在成员初始化列表中初始化它们。
C. 基类的子对象初始化 - 这一选项是有歧义的。如果指的是基类的成员(即基类中的子对象)
,那么这些在基类构造函数中被初始化,不应直接出现在派生类的成员初始化列表中。
但是,如果这里指的是由基类派生出的另一个基类的对象,
则派生类可以在其成员初始化列表中直接初始化这样的基类的子对象。
D. 派生类中一般数据成员的初始化 -
 派生类的构造函数的成员初始化列表当然可以包含派生类中一般数据成员的初始化。
因此,如果我们解释C为“基类中的子对象”,那么它是不能被派生类的构造函数的成员初始化列表直接初始化的,因为这是基类构造函数的责任。这样看来,C是正确的答案。如果解释C为“由基类派生的其他基类”,那么派生类是可以(并且应该)在其成员初始化列表中初始化这样的对象的。这里需要明确题目中“基类的子对象初始化”的具体含义。
选C

7. 定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式是 。

A. 私有继承 B. 非私有继承 C. 保护继承 D. 公有继承

A 私有继承

8. 在一个派生类的成员函数中,试图调用其基类的成员函数“void f();”,但无法通过编译。这说明 () 。

A. f()是基类的私有成员 B. f()是基类的保护成员
C. 派生类的继承方式是私有 D. 派生类的继承方式为保护

A f()是基类的私有成员

9. 有如下类定义:

class AA{
int a;
public:
AA(int n=0):a(n){}
};
class BB:public AA{
public;
BB(int n).......};

其中横线处缺失部分是 。
A.:a(n){} B.;AA(n){} C.{a(n)}; D.{a=n};

选项B `:AA(n){}` 正确的填写了类 BB 的构造函数,在初始化列表中调用了基类 AA 的构造函数,将 n 作为参数传递给它。这是正确的继承和初始化方式,能够确保派生类 BB 创建时,其基类 AA 的部分也得到了正确的初始化。

以下是各个选项的解释:

A. `:a(n){}` - 这是不合法的,因为 `a` 是基类 AA 的私有成员,不可以在派生类的初始化列表中直接初始化。

B. `:AA(n){}` - 这是正确的。它使用基类的构造函数来初始化基类部分。

C. `{a(n)};` - 这也是不合法的,因为像选项 A,`a` 是私有成员,不能在派生类中直接初始化或访问。

D. `{a=n};` - 这同样是不合法的,因为 `a` 是基类的私有成员,不能在派生类中直接赋值。

因此,正确答案是 B,它正确地使用了基类构造函数初始化基类成员变量。

10. 已知基类 Employee只有一个构造函数,其定义如下:

Employee::Employee(int n):id(n){}
Manager 是 Employee 的派生类,则下列对 Manager 的构造函数定义中,正确的是 。
A.Manager::Manager(int n):id(n){}
B.Manager::Manager(int n){id=n}
C.Manager::Manager(int n):Employee(n){}
D.Manager::Manager(int n){ Employee(n);}

C

11.有如下程序:

#include<iostream>
using namespace std;
class Base{
public;
void fun(){cout<'B';  }
};
class  Derived:public  Base{
public:
void fun()
{   .......        ;                                              
cout<<'D';
}
};
int main()
{  	Derived d;
d.fun();
return 0;
}

若程序的输出结果是 BD, 则画线处缺失的部分是 。
A.fun(); B.Base,fun(); C.Base::fun(); D.Base->fun();

C

12. 关于虚基类的描述中,错误的是 () 。

A, 使用虚基类可以消除由多继承产生的二义性
B. 构造派生类对象时,虚基类的构造函数只被调用一次
C. 声明“class B:virtual public A”,说明类 B为虚基类
D. 建立派生类对象时,首先调用虚基类的构造函数

C. 声明“class B:virtual public A”,说明类 B为虚基类

这个描述是错误的。该声明实际上是指 A 是 B 的虚基类,而不是 B 是某个虚基类。当使用虚继承时,
类 A 将成为类 B 的虚基类,这样做是为了解决多重继承中可能出现的菱形继承问题,
其中一个类可能通过不同的路径多次继承同一个基类。

二、填空题

1. 如果类 A 继承了类 B, 那么类 A 被称为 (基) 类,而类 B 被称为 (派生) 类。
2 . C++的两种继承为: (公有继承) 和 (私有继承) 。
3. 在默认情况下的继承方式为(私有继承) 。
4. 从基类中公有派生一个类时,基类的公有成员就成为派生类的(公有) 成员,而这个基类的保护成员就成为派生类的 (保护) 成员。
5. C++提供了(多继承) 机制,允许一个派生类可以继承多个基类,甚至这些基类是互 不相关的。
6. 类X中的名字N 支配类Y中同名的名字N, 是指类X 以类Y 为它的一个基类,这称为 (支配规则) 。
7. 引进虚基类的目的是 (消除多重继承中由于继承同一个基类而产生的二义性和重复基类成员问题) 。
8. 在一个继承结构中,解决二义性的方法有 (虚继承) 和 (使用作用域运算符) 。

三、阅读程序题

1. 下列程序的输出结果是(3)

#include<iostream>
using namespace std;
class Base
{	int k;
public:
	void set(int n){k=n;}
	int get(){return k;}
};
class Derived:protected Base
{  	int j;
public:
	void set(int m,int n){Base::set(m);j=n;}
	int get(){return Base::get()+j; }
};
int main()
{
	Derived d;
	d.set(1,2);
	cout<<d.get()<<endl;
	return 0;
}

2,下列程序的输出结果是

#include<iostream>
using namespace std;
class A
{
public:
	A(){ cout<<"A";}
	~A(){cout<<"~A"; }
};
class B:public A
{	A *p;
public:
	B()
	{   cout<<"B";
		p=new A();
	}
	~B()
	{   cout<<"~B";
		delete p;
	}
};
int main()
{  	B obj;
	return 0;
}
程序的输出结果是 `ABAB~A~B~A`。

下面是程序执行过程中的详细解释:

1. 在main函数中,创建了一个`B`类的对象`obj`。
2. 调用`B`的构造函数`B()`,由于`B`继承自`A`,首先调用基类`A`的构造函数。
3. 输出`A`。
4. 然后执行`B`的构造函数体,输出`B`。
5. 在`B`的构造函数中,使用`new`创建了一个`A`类的对象,并将其地址赋值给指针`p`,因此会再次调用`A`的构造函数。
6. 输出`A`。
7. 程序接着会离开`B`构造函数的作用域,但此时对象`obj`的生命周期并未结束,故不会调用任何析构函数。
8. 当main函数执行完毕,`obj`的生命周期结束,此时会首先调用`B`类的析构函数`~B()`。
9. 输出`~B`。
10. 在`~B()`中,`delete p;`会删除之前构造函数中创建的`A`对象,因此调用`A`的析构函数。
11. 输出`~A`。
12. 跳出`~B()`的作用域,`B`的析构函数执行完毕,接着调用基类`A`的析构函数。
13. 输出`~A`。

因此,整个程序的输出为`ABAB~A~B~A~A`。

3. 下列程序的输出结果是 。

#include<iostream>
using namespace std;
class A{
public:
	int x;
	A(){ x=100; }
	A(int  i){x=i; }
	void Show(){ cout<<"x="<<x<<'\t'<<"AA\n"; }
};
class B{
public:
	int y;
	B(){y=300;}
	B(int x){y=x; }
	void Show(){cout<<"y="<<y<<'\t'<<"BB\n";}
};
class C:public A,public B{
public:
	int y;
	C(int a,int b,int c):A(a),B(b){y=c; }
	void Show(){ cout<<"y="<<y<<'\t'<<"cc\n"; }
};
int  main()
{  	C c1(400,500,600);
	c1.y=200;
	c1.Show();
	c1.A::Show();
	c1.B::Show();
	return 0;
}

4. 下列程序的输出结果是

#include<iostream>
using namespace std;
class base
{
public:
	void who(){ cout<<"base class"<<endl;}
};
class derivel:public base
{
public:
	void who(){cout<<"derivel class"<<endl;}
};
class derive2:public base
{
public:
	void who(){cout<<"derive2 class"<<endl; }
};
void fun(base *p)
{   p->who();}
int main()
{   base obj1,*p;
	derivel obj2;
	derive2 obj3;
	fun(&obj1);
	fun(&obj2);
	fun(&obj3);
	obj2.who();
	obj3.who();
	return 0;
}
base class
base class
base class
derivel class
derive2 class
程序解释:

base obj1,*p; 声明了基类 base 的一个对象 obj1 和一个指针 p。

derivel obj2; 声明了派生类 derivel 的一个对象 obj2。

derive2 obj3; 声明了派生类 derive2 的一个对象 obj3。

fun(&obj1); 调用函数 fun 传入 base 类的对象地址,函数中的 p->who(); 调用的是基类 base 的 who 方法。

fun(&obj2);fun(&obj3); 由于 fun 的参数类型是 base 类的指针,根据参数的静态类型,调用的也是 base 类的 who 方法。这里没有发生多态,因为 who 方法在基类中没有被声明为 virtual。

最后,obj2.who(); 和 obj3.who(); 直接调用其各自类的 who 方法,因为这里是通过对象调用,不涉及多态。

由于基类的 who() 方法没有被声明为虚函数 (virtual)fun() 函数中的 p->who() 调用不会展现多态行为(即不会根据对象的实际类型来调用对应的函数),而是会根据指针类型(基类 base)调用基类的 who() 方法。因此,前三次调用 fun() 都会输出 "base class"。而直接通过派生类对象调用 who() 时,则会调用相应派生类中的方法,分别输出 "derivel class""derive2 class"

三、编程题

1. 定义一个长方形 Rect 类,派生出长方体类 Cub, 计算派生类对象的表面积和体积。

#include <iostream>
using namespace std;
class Rect{
	public:
	double length;
	double width;
		Rect(double l,double w){
			length=l;width=w;
		}
		double area1(){
			return length*width;
		}
}; 
class Cub:public Rect{
	double height;
	public:
		Cub(double l,double w,double r):Rect(l,w){
		height=r;
		}
		double bs(){
			return 2*length*width+2*length*height+2*width*height;
		}
		double volume(){
			return area1()*height;
		}
};
int main(){
	Cub A(3,4,5);
	cout<<"表面积为:"<<A.bs()<<"体积为:"<<A.volume();
}
}

在这里插入图片描述

2. 定义一个 Shape 基类,并派生出圆球体(Sphere) 和立方体类(Cube), 分别求圆球体 与立方体对象的表面积和体积。

#include<iostream>
using namespace std;
class Shape {
protected: // protected允许子类访问
    double x, y;
public:
    Shape(double a, double b) {
    	x=a;y=b;
	}
    double area() {
        return 0;
    } 
    double volume() {
        return 0;
    }
};
class Sphere : public Shape {
    double radius;
public:
    Sphere(double d): Shape(d, d){
    	radius=d;
	} // 调用基类构造函数并初始化radius
    double area() {
        return 3.14 * radius * radius * 4;
    }
    double volume() {
        return 3.14 * radius * radius * radius * 4 / 3;
    }
};
class Cube : public Shape {
    double z;
public:
    Cube(double a, double b, double c) : Shape(a, b) {
    	z=c;
	} // 调用基类构造函数并初始化z
    double area() {
        return 2 * (x * y + x * z + y * z);
    }
    double volume() {
        return x * y * z;
    }
};
int main() {
    Sphere A(1);
    cout << "圆球体的表面积为:" << A.area() << "\n"; 
    cout << "圆球体的体积为:" << A.volume() << "\n"; 
    Cube B(3, 4, 5);
    cout << "立方体的表面积为:" << B.area() << "\n"; 
    cout << "立方体的体积为:" << B.volume() << "\n"; 
    return 0;
}

在这里插入图片描述

3. 定义一个点类(Point)、矩形类(Rectangle和立方体类(Cube)的层次结构。矩形包括长度和宽度两个新数据成员,矩形的位置从点类继承。立方体类由长度、宽度和高度构成要求各类提供支持初始化的构造函数和显示自己成员的成员函数。编写主函数,测试这个层次结构,输出立方体类的相关信息。

#include<iostream>
using namespace std;
class Point//描述二维平面中一个点的类
{
    double x, y;
public:
    Point(float i=0, float j=0) { x=i; y=j;}
    double area( ) { return 0.0;}
};
class Rectangle:public Point
{
	float length;
	protected:
		float width;
	public:
		Rectangle(){
			length=0;width=0;
		} 
		Rectangle(float l,float w){
			length=l;width=w;
		}
		float Area(){
			return length*width;
		}
		float GetL(){
			return length;
		}
		float GetW(){
			return width;
		}
		void RPrint(){
			cout<<"矩形的长为:"<<length;
			cout<<"\t宽为"<<width;
		}
};
class Cuboid:public Rectangle
{
	float high;
	public:
		Cuboid(){
			high=0;
		}
		Cuboid(float l,float w,float h):Rectangle(l,w){
			high=h;
		} 
		void CPrint()
		{
			cout<<"长方体的长为:"<<GetL()<<"\t宽为:"<<width;
			cout<<"\t高为:"<<high<<"\t体积为:"<<high*Area()<<'\n';
		}
};
int main(){
	Rectangle r(10,5);
	r.RPrint();
	cout<<"\t面积为:"<<r.Area()<<'\n';
	Cuboid c(6,3,10);
	cout<<"矩形的长为:"<<c.GetL()<<"\t宽为:"<<c.GetW();
	cout<<"\t面积为:"<<c.Area()<<'\n';
	c.CPrint(); 
}

在这里插入图片描述

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

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

相关文章

[CISCN 2019华东南]Web11

[CISCN 2019华东南]Web11 wp 信息搜集 页面内容如下&#xff1a; 右上角显示的是我的当前 IP 。 在最下角提示&#xff1a;Build With Smarty ! Smarty 是 PHP 的一个模板引擎&#xff0c;那么这道题应该是 Smarty 模板注入。 Smarty 模板注入 可以参考博客&#xff1a;Sm…

4年微博热搜数据,一次拿走

又是新的一年了&#xff0c;从2020年开始&#xff0c;就养成了定时备份各大平台热搜数据的习惯&#xff0c;微博&#xff0c;知乎都在备份&#xff0c;今天给大家看一下从2020年到2023年的微博热搜数据情况 这是2022年的备份数据&#xff0c;每天的热搜数据一个文件&#xff0c…

[蓝桥杯基础题型] 图论题目

遍历 添加路障 首先答案只能是0 1 2 &#xff0c;原因&#xff1a;把出发点堵住只需要两个路障 路障为0&#xff1a;不能找到一条从出发点到终点的路 路障为1&#xff1a;能找到一条从出发点到终点的路&#xff0c;但是只有一条 路障为2&#xff1a;能找到一条从出发点到终…

Origin 2021软件安装包下载及安装教程

Origin 2021下载链接&#xff1a;https://docs.qq.com/doc/DUnJNb3p4VWJtUUhP 1.选中下载的压缩包&#xff0c;然后鼠标右键选择解压到"Origin 2021"文件夹 2.双击打开“Setup”文件夹 3.选中“Setup.exe”鼠标右键点击“以管理员身份运行” 4.点击“下一步" 5…

SELinux 安全模型——MLS

首发公号&#xff1a;Rand_cs BLP 模型&#xff1a;于1973年被提出&#xff0c;是一种模拟军事安全策略的计算机访问控制模型&#xff0c;它是最早也是最常用的一种多级访问控制模型&#xff0c;主要用于保证系统信息的机密性&#xff0c;是第一个严格形式化的安全模型 暂时无…

SQL性能优化-索引

1.性能下降sql慢执行时间长等待时间长常见原因 1&#xff09;索引失效 索引分为单索、复合索引。 四种创建索引方式 create index index_name on user (name); create index index_name_2 on user(id,name,email); 2&#xff09;查询语句较烂 3&#xff09;关联查询太多join&a…

Embedding模型在大语言模型中的重要性

引言 随着大型语言模型的发展&#xff0c;以ChatGPT为首&#xff0c;涌现了诸如ChatPDF、BingGPT、NotionAI等多种多样的应用。公众大量地将目光聚焦于生成模型的进展之快&#xff0c;却少有关注支撑许多大型语言模型应用落地的必不可少的Embedding模型。本文将主要介绍为什么…

【SpringCloud Alibaba笔记】(2)Nacos服务注册与配置中心

Nacos Nacos简介与下载 是什么&#xff1f; 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos&#xff08;Dynamic Naming and Configuration Service&#xff09;就是注册中心&#xff0b;配置中心的组合 Nacos Eureka Config Bus 替代Eureka…

初识HTTP协议

Web服务器可以接收浏览器的请求&#xff0c;并将服务器中的web项目资源响应给浏览器&#xff0c;浏览器与服务器之间进行网络通信遵循HTTP协议。 一、什么是HTTP协议 超文本传输协议&#xff08;HTTP&#xff0c;HyperText Transfer Protocol&#xff09;(浏览器---->web服务…

27 UVM queue

uvm_queue类构建一个动态队列&#xff0c;该队列将按需分配并通过引用传递。 uvm_queue类声明&#xff1a; class uvm_queue #( type T int ) extends uvm_object 1 uvm_queue class hierarchy 2 uvm_queue class Methods 3 UVM Queue Example 在下面的示例中&#xff0c;…

基于深度卷积神经网络的垃圾分类识别系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本文详细介绍了一基于深度卷积神经网络的垃圾分类识别系统。采用TensorFlow和Keras框架&#xff0c;通过卷积神经网络&#xff08;CNN&#xff09;进行模型训练和预测。引入迁移学习中的VGG16模型…

Linux:apache优化(7)—— 日志分割|日志合并

作用&#xff1a;随着网站访问量的增加&#xff0c;访问日志中的信息会越来越多&#xff0c; Apache 默认访问日志access_log单个文件会越来越大&#xff0c;日志文件体积越大&#xff0c;信息都在一个文件中&#xff0c;查看及分析信息会及不方便。 分割 实现方式&#xff1a…

『JavaScript』JavaScript事件类型详解:全面解析各类用户交互行为

&#x1f4e3;读完这篇文章里你能收获到 理解事件驱动编程的基本概念和工作原理掌握JavaScript中常见的事件类型及其应用场合学习如何使用DOM API添加和移除事件监听器探讨事件冒泡、事件捕获和事件委托等高级事件处理技术 文章目录 一、事件处理程序1. HTML事件处理HTML事件处…

单片机键盘程序设计举例

1、键盘与的连接 图3键盘连接 图4单片机与键盘接口图 2、通过1/0口连接。将每个按钮的一端接到单片机的I/O口&#xff0c;另一端接地&#xff0c;这是最简单的办法&#xff0c;如图3所示是实验板上按钮的接法&#xff0c;四个按钮分别接到P3.2 、P3.3、P3.4和P3.5。对于这种键…

HttpClient入门

HttpClient入门 简介 HttpClient 是 Apache HttpComponents 项目中的一个开源的 Java HTTP 客户端库&#xff0c;用于发送 HTTP 请求和处理 HTTP 响应。它提供了一组强大而灵活的 API&#xff0c;使得在 Java 程序中执行 HTTP 请求变得相对简单 maven依赖 org.apache.httpco…

72内网安全-域横向CSMSF联动及应急响应知识

拿到才行&#xff0c;拿不到就是多余的 案例一MSF&CobaltStrike 联动 Shell 有一些功能可能cs或者msf强大一些&#xff0c;他们两个可以相互调用&#xff0c;在真实情况下也是可以cs和msf同时启动的&#xff0c; cs移交给msf .创建Foreign监听器 “Listeners”“Add”…

[NAND Flash 4.2] Flash 原理 | NOR Flash 和 NAND Flash 闪存详解

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< 前言 智能手机有一个可用的存储空间(如苹果128G),电脑里有一个固态硬盘空间(如联想512G), 这个空间是啥呢? 这个存储空间就是闪存设备,我们都统称为…

ILI9481 TFT3.5寸屏STM32F446ZEXX FMC驱动方式详解

图片来源于网络&#xff0c;如若侵权请联系博主删除 文章目录 1. 背景2. 基础知识2.1 TFT-LCD2.2 硬件接线2.3 FMC2.4 ILI9481 3. 软件抽象 1. 背景 最近做项目需要&#xff0c;博主在某宝上买了一块3.5寸的TFT屏&#xff0c;店家虽然发了资料&#xff0c;但是往产品上移植驱动…

动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper

文章目录 前言下载github地址&#xff1a;网盘 关于VideoWebpagesYoutube和流媒体ShadersGIFs游戏和应用程序& more:Performance:多监视器支持&#xff1a;完结 前言 Lively Wallpaper是一款开源的视频壁纸桌面软件&#xff0c;类似 Wallpaper Engine&#xff0c;兼容 Wal…

PiflowX组件-JDBCRead

JDBCRead组件 组件说明 使用JDBC驱动向任意类型的关系型数据库读取数据。 计算引擎 flink 有界性 Scan Source: Bounded Lookup Source: Sync Mode 组件分组 Jdbc 端口 Inport&#xff1a;默认端口 outport&#xff1a;默认端口 组件属性 名称展示名称默认值允许…