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

【C++】类中的特殊成员——静态成员,友元成员,常量成员

下图为笔者根据自己的理解做的图,仅供参考~
在这里插入图片描述

文章目录

  • 一.静态成员static
      • *类外
    • 1.1静态数据成员
    • 1.2静态函数成员
      • *不同属性下的静态成员
    • 1.3局部静态(Local Static)
  • 二.常量成员
    • 2.1常量数据成员
    • 2.2常量函数成员
    • 2.3常量对象
  • 三.友元成员
    • 3.1友元函数
    • 3.2友元类
      • 友元的特性
  • 总结

一.静态成员static

*类外

静态变量或函数意味着,当需要将这些变量或函数与实际定义的符号链接时,链接器不会在这个翻译单元的作用域之外寻找那个符号定义,即只会在这个翻译单元内部链接(文件内可用)

代码实例

//Main.cpp
#include<iostream>
int s_Variable = 10;
int main() {std::cout << s_Variable << std::endl;
}//Static.cpp
static int s_Variable = 5;//类外声明静态整型变量//输出:10

当删掉Static.cpp中的static int s_Variable = 5;中的static后,报错了

我们可以将Main.cpp中的int s_Variable = 10;改为extern int s_Variable;

->没有问题,输出5

C++中extern关键字的用法

在C++中,extern关键字用于声明变量或函数是在其他文件中定义的。这是一种链接不同编译单元中的全局变量和函数的方法。使用 extern可以在一个文件中定义全局变量或函数,并在其他文件中访问它们,从而实现跨文件共享

类内

1.1静态数据成员

指的是在C++类中声明成员时,可以加上static关键字,这样声明的成员叫静态成员。静态成员分为静态数据成员和静态函数成员两种。

  1. 定义
class node{public:static int id;//静态数据成员定义
}
int node::id=10;//静态数据成员类外初始化
  1. 特点
  • 类中的静态数据成员,所有对象都共享该数据,只有一份内存在内存中
  • 类中的静态数据成员,必须要在类外初始化,因为它不属于对象,而是属于类。对象不管是否存在,这个静态数据成员都是存在的,而且静态数据成员的生命周期是程序开始就存在(主函数运行之前),直到程序结束才会被释放
  • 类中的静态数据成员,可以在类中被重新赋值,可以被普通函数访问,如果该成员是公有属性,那么还可以在类外被对象自己访问(没什么意义),或者通过类名访问

1.2静态函数成员

  1. 定义
class node{public:static void fun(){}//在类中定义static void fun1();//在类中声明
}
void node::fun1(){}//在类外定义
  1. 特点
  • 类中的静态函数成员,这个函数同样也不属于对象,而是属于类的,所以在这个函数中不能操作类中的普通数据成员和普通成员函数。因为这些普通成员是必须要有对象的时候才会被建立,而静态函数不用对象也能调用。也就是说我们不用实例化对象就能使用静态变量和方法(下面的例子会讲到)
  • 访问和静态数据成员一致
  • 可以在这个静态函数中使用局部变量、形参、静态数据成员

【代码示例】

原始代码->

#include<iostream>
class Entity {
public:int x, y;void print() {std::cout << x << "," << y << std::endl;}
};int main() {Entity e;e.x = 2;e.y = 3;Entity e1;e1.x = 5;e1.y = 8;e.print();//2,3e1.print();//5,8
}
//输出:2,3
//5,8

将x和y变为静态的:static int x,y;并在类外初始化该静态成员

#include<iostream>
class Entity {
public:static int x, y;void print() {std::cout << x << "," << y << std::endl;}
};
int Entity::x;
int Entity::y;int main() {Entity e;e.x = 2;e.y = 3;e.print();Entity e1;e1.x = 5;e1.y = 8;  //被刷新了,相当于只有一个x,y值e.print();e1.print();
}
//输出:2,3
//5,8
//5,8

特点理解①——不用实例化对象就能使用静态变量和方法

e1.x = 5;像这样引用没什么意义

可以像这样引用:Entity::x = 5;

同样地,将print函数改为静态的

e.print();可以写成Entity::print();

于是,上面的代码改为->

#include<iostream>
class Entity {
public:static int x, y;static void print() {std::cout << x << "," << y << std::endl;}
};
int Entity::x;
int Entity::y;int main() {Entity::x = 6;Entity::y = 7;Entity::print();
}

特点理解②——不能用静态的方法访问非静态成员

#include<iostream>
struct Entity {int x, y;static void print() {std::cout << x << "," << y << std::endl;}
};int main() {Entity e;e.x = 6;e.y = 7;Entity::print();
}
//报错:对非静态成员的“Entity::x”的非法引用

*不同属性下的静态成员

在面向对象编程中,公有属性下的静态成员私有属性下的静态成员主要有以下区别:

以下是用C++展示公有属性下的静态成员和私有属性下的静态成员区别的代码示例:

#include <iostream>
using namespace std;class MyClass {
public:// 公有静态成员变量static int public_static_variable; // 公有静态成员函数,用于访问私有静态成员变量(一种间接访问方式示例)
static void access_private() {cout << private_static_variable << endl;
}
private:// 私有静态成员变量static int private_static_variable; 
};// 类外初始化公有静态成员变量
int MyClass::public_static_variable = 10;
// 类外初始化私有静态成员变量
int MyClass::private_static_variable = 20;int main() {// 直接访问公有静态成员变量cout << MyClass::public_static_variable << endl; // 通过公有静态成员函数间接访问私有静态成员变量MyClass::access_private(); return 0;
}
//输出:10
//20

在上述代码中:

①访问权限方面

  • 公有静态成员变量 public_static_variable:在 main 函数等类外部的地方,可以通过 类名::成员名 (如 MyClass::public_static_variable )的方式直接访问,体现了公有能被外部自由访问的特点。
  • 私有静态成员变量 private_static_variable :它不能在类外部直接通过 类名::成员名 的方式访问,只能在类内部的成员函数中访问(像示例里的 access_private 函数),保证了外部代码无法直接触及。

②作用和用途方面

  • 公有静态成员变量和函数:比如 public_static_variable可以作为类对外提供的共享数据,外部代码能方便获取或修改(如果需要), access_private函数这种公有静态成员函数可以作为类对外提供的操作接口,合理控制对内部私有静态成员的访问等情况。
  • 私有静态成员变量:可以用来保存类内部一些不想被外部随意更改,只供内部逻辑使用的数据,例如在更复杂的类设计中,可能用于记录类内部状态等关键的、不希望外部干扰的信息。

1.3局部静态(Local Static)

静态局部变量允许我们声明一个变量,它的生命周期基本上相当于整个程序的生命周期,但是它的作用域范围是被限制的。你可以在任何作用域中声明,如果在函数中声明,那么它的作用域范围被限制在这个函数中。

示例:

#include<iostream>
void Function() {static int i = 0;i++;std::cout << i << std::endl;
}int main() {Function();Function();Function();Function();Function();
}
//输出:1
//2
//3
//4
//5

这意味着当我第一次调用函数时,这个变量将被初始化为0,初始化值0会贯穿整个程序的生命周期,每一次运行函数都会刷新值,即所有对函数的后续调用实际上不会创建一个全新的变量

而下面这种情况就不会这样->

#include<iostream>
void Function() {int i = 0;i++;std::cout << i << std::endl;
}int main() {Function();Function();Function();Function();Function();
}
//输出:1
//1
//1
//1
//1

改变作用域范围也会达到同样的效果->

#include<iostream>
int i = 0;
void Function() {i++;std::cout << i << std::endl;
}int main() {Function();Function();Function();Function();Function();
}
/*输出:1
2
3
4
5
*/

但这种方法的问题是我可以在任意地方访问 i

	Function();i=10;Function();Function();Function();Function();
/*输出:1
11
12
13
14
*/

总结

static的五种用法:

  1. 全局变量前加static修饰为文件作用域全局变量,内存在全局数据区
  2. 块作用域前加static修饰为块作用域变量,但内存在全局数据区
  3. 普通函数前加static修饰为文件作用域函数
  4. 类中数据成员前加static修饰为类中所有对象共享数据
  5. 类中函数成员前加static修饰为类中所有对象共享成员

二.常量成员

常量成员,指的是在C++类中声明对象成员时可以加上const关键字

这样声明的成员叫常量成员,常量成员分为常量数据成员和常量函数成员

2.1常量数据成员

定义

class node{const int id;
}

初始化

可以在定义的时候直接在后面赋值:const int id=10;//不建议使用

或者通过初始化列表的方式初始化

初始化列表的使用

初始化列表要写在构造函数的后面,如下:

class node {const int id;
public:node():id(10){}//把10赋值给id
};

当然,普通的数据成员也可以这样初始化

class node{const int id;int age;
public:node ():id(10),age(20){}//把10赋值给id,20赋值给age
};//如果要是给类中的多个数据初始化,中间用逗号隔开

初始化列表的特性

  1. 初始化列表也是实现类中成员数据初始化的一种方式
  2. 一些特殊情况下,数据成员的初始化只能用初始化列表的方式给数据成员赋值,而不能在构造函数中直接赋值
  3. 初始化列表必须写在构造函数的定义体后面
  4. 构造函数能对数据的初始化工作,初始化列表也可以,但是初始化列表能做的,构造函数不一定能
  5. 初始化列表的初始化顺序是按照他们在类中出现的顺序来初始化的,而不是在初始化列表中的顺序来初始化的

2.2常量函数成员

定义

class node {int id = 10;
public:void fun() const {id = 10;//报错,这是反例}//下面是正确用法void fun1() const;//类内声明//const void fun1(){} 这样写的话,const是修饰返回值类型的
};
void node::fun1() const{}//类外实现
//在这个函数中,不能修改类中的数据成员(静态数据可以)

特点

类中的常量函数成员,在这个函数中不能对自身变量进行修改。通过语法限定,只要是this指针所指向的所有数据都不可以被修改(静态数据可以改变)。这样,类自身在调用该函数时,无法修改其成员数据,从而实现对数据修改权限的约束。

2.3常量对象

  1. 在对象实例化时在类名前面加上const修饰,该对象为常量对象,满足常量的操作,定义时必须初始化
  2. 该对象里面的所有数据都不能被修改,因此对象里面的普通成员函数不允许被调用,只允许调用常量函数成员

三.友元成员

类的特性之一就是封装,而友元就是C++为用户提供打破这种封装的手段,友元分为友元函数和友元对象——

3.1友元函数

  • 友元函数,他只是一个函数,友元函数不是类的成员,通过类对象是无法访问的,但是在这个函数中有权通过对象访问类中的所有成员
  • 友元函数,无论声明在类中的任何访问属性下都可以,不影响他的调用和访问

示例:

#include<iostream>
class node {int id = 10;friend void fun(node& n);
};
void fun(node& n) {std::cout << n.id << std::endl;
}
int main() {node n;fun(n);//输出10
}

3.2友元类

友元类是一个单独的类,只不过和友元函数一样,在类中声明了一个友元类,在这个友元类中同样也可以访问该类中的所有成员,在A类中声明B类为A类的友元类,那么在B类中就可以访问A类中的所有成员

示例:

#include<iostream>
class A {friend class B;int id = 10;
};
class B {
public:void fun(A& a) {std::cout << a.id << std::endl;}
};
int main() {A a;B b;b.fun(a);//输出10
}

友元的特性

  1. 单方向:B是A的朋友,B可以访问A的数据,A不可以访问B的数据
  2. 不传递:A是B的朋友,B是C的朋友,A和C没有朋友关系
  3. 不继承:A是B的朋友,B是C的父亲,A和C没有朋友关系

总结

在C++中,普通成员、静态成员、常量成员与友元成员之间有以下联系:

普通成员与静态成员

  • 共享与独立:普通成员每个类对象都有独立的一份,对象之间互不影响;静态成员被类的所有对象共享,不管创建多少对象,静态成员只有一份。例如,统计类实例化对象的数量,适合用静态成员变量。
  • 访问方式:普通成员通过对象访问,静态成员可以通过类名或对象访问。

普通成员与常量成员

  • 初始化与不变性:普通成员可被修改;常量成员在初始化后不能被修改,且必须在构造函数初始化列表中初始化,如定义一个表示圆半径的常量成员,初始化后就不能改变。
  • 函数成员的使用:常量成员函数保证不修改对象状态,普通成员函数可以修改。

普通成员与友元成员

  • 访问权限:普通成员遵循类的访问控制,私有成员只能在类内访问;友元函数或友元类可以访问类的私有和保护成员,打破了类的封装性。例如,在实现重载流插入和流提取运算符时,常将其声明为类的友元函数来访问类的私有成员进行输出和输入操作。

静态成员与常量成员

  • 共享的不变性:静态常量成员结合了两者特性,被类的所有对象共享且不可修改,像定义一个表示数学常量π的静态常量成员,供类的所有方法使用。

静态成员与友元成员

  • 友元对静态的访问:友元函数或友元类可以访问类的静态成员,访问方式与访问普通静态成员相同。

常量成员与友元成员

  • 友元对常量的访问:友元可以访问常量成员,不过要遵守常量成员的不可修改规则。

相关文章:

【C++】类中的特殊成员——静态成员,友元成员,常量成员

下图为笔者根据自己的理解做的图&#xff0c;仅供参考~ 文章目录 一.静态成员static*类外 1.1静态数据成员1.2静态函数成员*不同属性下的静态成员 1.3局部静态(Local Static) 二.常量成员2.1常量数据成员2.2常量函数成员2.3常量对象 三.友元成员3.1友元函数3.2友元类友元的特…...

开源 Agent 小屋

知乎&#xff1a;何枝地址&#xff1a;https://zhuanlan.zhihu.com/p/9096314010 Live Demo&#xff08;网站在进入前可能会加载一段时间&#xff0c;需要等一等&#xff09; 人物观测&#xff1a;Agent Life Live Demo[1] 行为统计&#xff1a;Agent Life Action Logging Bo…...

Mina之账户模型

为了能真正提升自己的能力&#xff0c;而不是机械低效的Ctrl C / Ctrl V&#xff0c;先从基本概念入手&#xff0c;利用ChatGPT来弄懂Mina。 Mina Mina Protocol 是一种轻量级区块链&#xff0c;被称为“世界上最轻的区块链”。其目标是通过极小的链上数据大小和强大的隐私…...

STM32 ADC 配置

ADC&#xff08;模数转换器&#xff09;用于将模拟信号转换为数字信号&#xff0c;以便单片机处理。 模数转换器&#xff08;Analog-to-Digital Converter, ADC&#xff09;是电子系统中不可或缺的一部分&#xff0c;它负责将现实世界中的连续物理量&#xff0c;如温度、声音、…...

练9:进制转换

欢迎大家订阅【蓝桥杯Python每日一练】 专栏&#xff0c;开启你的 Python数据结构与算法 学习之旅&#xff01; 文章目录 1 进制转换2 例题分析 1 进制转换 ①任意制转为十进制 【示例】 ②十进制转为任意制 【法一】 【法二】 2 例题分析 题目地址&#xff1a;https:/…...

善于运用指针--函数与指针

文章目录 前言一、函数的指针二、函数指针运用 1函数名地址2指针变量调用函数3指向函数的指针变量做函数参数二、返回指针值的函数总结 前言 如果在程序中定义了一个函数&#xff0c;在编译时会把函数的源代码转换为可执行代码并分配一段空间。这段空间有一个起始地址&#xf…...

Microi吾码低代码平台:前端源码的本地运行探索

文章目录 1.前端源码运行环境要求1.1 操作系统1.2 必备软件工具1.3 项目源码依赖 2.从Git仓库克隆前端源码3.安装项目依赖4.启动本地开发服务器5.常见问题与解决方案5.1 依赖安装失败5.2 端口冲突5.3 代码更新未生效 6.提升本地开发体验的技巧6.1 使用代理解决跨域问题6.2 集成…...

十一、容器化 vs 虚拟化-Docker 使用

文章目录 前言一、Docker Hello World二、Docker 容器使用三、Docker 镜像使用四、Docker 容器连接五、Docker 仓库管理六、Docker Dockerfile七、Docker Compose八、Docker Machine九、Swarm 集群管理 前言 Docker 使用‌ Docker 容器使用、镜像使用、容器连接、仓库管理、Do…...

实践项目2-自动计价电子秤

自动计价电子秤 一、功能说明 基于AVR单片机设计一自动计价电子秤。根据输入的价格以及检测的重量自动计算总价并打印&#xff08;串口模拟&#xff09;。 二、具体要求 1、开机后实时检测重量并显示&#xff1b; 2、通过按键输入并显示价格&#xff0c;具有修改功能&#…...

iOS如何操作更新推送证书

最近收到一份邮件,应该如何操作呢,证书还是跟以前一样冲钥匙串直接申请吗 Hello, As we announced in October, the Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January…...

WSL2 在vscode无法连接copilot

报错情况&#xff1a; 本机可以使用copilot&#xff0c;但在WSL2上无法连接&#xff0c;报错信息如下&#xff1a; 检查网络情况&#xff1a; ping api.github.com 发现无法连接&#xff1a; github.com:Temporary failure in name resolution 在网上搜集的解决方法&#…...

HTA8998 实时音频跟踪的高效内置升压2x10W免电感立体声ABID类音频功放

1、特征 输出功率(fIN1kHz,RL4Ω&#xff0c;BTL) VBAT 4V, 2x10.6W(VOUT9V,THDN10%) VBAT 4V, 2x8.6W (VOUT9V,THDN1%) 内置升压电路模式可选择:自适应实时音频跟踪 升压(可提升播放时间50%以上)、强制升压 最大升压值可选择&#xff0c;升压限流值可设置 ACF防破音功能 D类…...

用ChatGPT-o1进行论文内容润色效果怎么样?

目录 1.引导问题发现 2.角色设定 3.整理常问修改 4.提供样例 5.小细节 小编在这篇文章中分享如何充分利用ChatGPT-o1-preview来提升论文润色的技巧。小编将持续跟进最新资源和最新的调研尝试结果&#xff0c;为宝子们补充更多实用的写作技巧。这些技巧将有助于您更有效地利…...

《探索 Jetpack Compose:构建现代化 Android UI 的利器》

Jetpack Compose 是谷歌推出的现代化 UI 框架&#xff0c;用于简化 Android 应用开发中的 UI 构建。它使用声明式编程方式&#xff0c;允许开发者以简洁直观的方式创建动态和响应式的 UI。本文将从基础概念到进阶用法&#xff0c;带你全面了解 Compose 的核心功能和使用技巧。 …...

cocos creator 的 widget组件的使用及踩坑

以下的内容基于cocos creator 3.8版本&#xff0c;如有错误&#xff0c;恳请指出。 &#x1f449;官方文档的指引 应用&#xff1a;以上官方指引有非常清晰的使用方式&#xff0c;接下来说明一些注意事项&#xff1a; 1、与canvas搭配的使用&#xff0c;解决多分别率适配问题。…...

Baumer工业相机的EMVA1288 数据报告简介

项目场景&#xff1a; Baumer工业相机堡盟VCX系列和VLX系列为堡盟全系列相机中的主流常用相机和高端相机&#xff0c;性能强大、坚固可靠&#xff0c;易于集成&#xff0c;常用与一般行业的检测定位识别使用。 对应的高端相机系列具有极为丰富的强大技术功能&#xff0c;可轻…...

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…...

uni-app 个人课程表页面

uni-app 个人课程表页面 插件参考地址 大部分代码都是参考了上述代码&#xff0c;只对代码做出了优化 1. 页面模板 在 schedule.vue 文件中&#xff0c;编写页面结构&#xff1a; <template><view><u-navbar title"个人中心"><view class&q…...

FPGA工作原理、架构及底层资源

FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称&#xff08;IOB&#xff09;2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …...

【OpenCV】平滑图像

二维卷积(图像滤波) 与一维信号一样&#xff0c;图像也可以通过各种低通滤波器&#xff08;LPF&#xff09;、高通滤波器&#xff08;HPF&#xff09;等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…...

LeetCode300. 最长递增子序列(2024冬季每日一题 30)

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 子序列。 示例 1&…...

vue H5如何实现copy功能

vue H5如何实现copy功能 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"stylesheet" href"https://unpkg.com/vant2.12/lib/index.css" /><title></title><st…...

Golang使用etcd构建分布式锁案例

在本教程中&#xff0c;我们将学习如何使用Go和etcd构建分布式锁系统。分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要。它有助于维护一致性&#xff0c;防止竞争条件&#xff0c;并确保在任何给定时间只有一个进程独占访问资源。 我们将使用Go作为编程语言&am…...

Windows 和 Ubuntu 双系统安装

复现论文的时候&#xff0c;个别包只有Linux版本&#xff0c;并且源码编译比较麻烦&#xff0c;所以干脆直接安装一个双系统&#xff08;WinUbuntu&#xff09;&#xff0c;方便复现论文。 参考视频链接&#xff1a;Windows 和 Ubuntu 双系统的安装和卸载 0.所需工具 4G以上U…...

多媒体文件解复用(Demuxing)过程

多媒体文件的解复用&#xff08;Demuxing&#xff09;过程指的是从一个多媒体容器文件&#xff08;如 MP4、MKV、AVI 等&#xff09;中提取不同类型的多媒体数据流&#xff08;例如视频流、音频流、字幕流等&#xff09;的过程。 容器文件本身并不包含实际的视频或音频数据&…...

从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级

从 Zuul 迁移到 Spring Cloud Gateway&#xff1a;一步步实现服务网关的升级 迁移前的准备工作迁移步骤详解第一步&#xff1a;查看源码第二步&#xff1a;启动类迁移第三步&#xff1a;引入 Gateway 依赖第四步 编写bootstrap.yaml第五步&#xff1a;替换路由配置第六步&#…...

qt之插件编译

QtXlsxWriter sudo apt install qtbase5-private-dev git clone https://github.com/dbzhang800/QtXlsxWriter.git cd QtXlsxWriter/ qmake make -j6 sudo make install #将生成的lib 及 include copy至项目路径的lib 及include里项目配置&#xff1a; QT xlsxbluetoo…...

pandas一行拆成多行

import pandas as pd df pd.DataFrame({Country:[China,US,Japan,EU,UK/Australia, UK/Netherland],Number:[100, 150, 120, 90, 30, 2],Value: [1, 2, 3, 4, 5, 6],label: list(abcdef)})# 法一 推荐 df2df.drop(Country, axis1).join(df[Country].str.split(/, expandTrue).…...

今天调了个转速的小BUG

同事说转速表有个bug&#xff0c;转速停止后&#xff0c;继电器没有恢复到初始状态。若停止之前是报警&#xff0c;继电器吸合&#xff0c;则停止后继电器还是吸合。我心想不会啊&#xff0c;这软件都弄了好几年了&#xff0c;一直也没出现过状况。 经过与调试同事的沟通&#…...

第三节、电机定速转动【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍用定时器定时的方式&#xff0c;精准控制脉冲时间&#xff0c;从而控制步进电机速度 一、计算过程 1.1 电机每一步的角速度等于走这一步所花费的时间&#xff0c;走一步角度等于步距角&#xff0c;走一步的时间等于一个脉冲的时间 w s t e p t … ……...

土石方工程网站/百度网址大全下载安装

这套程序某站授权卖3000开源9000程序可以完美运营&#xff0c;没有任何bug对接了众人帮、两个问卷一个打字一个游戏接口&#xff0c;搭建就能运营&#xff0c;支付对接的是码支付。下载地址里面有教程前端后端数据库都是完整的&#xff0c;后台账号密码好像是admin/123456主要说…...

wordpress 插入文章/河北网站建设案例

KUKA机器人码垛程序怎么写(案例)注&#xff1a;本文章文字、图片部分来自网络版权归原作者&#xff0c;侵删。工博士提供了KUKA&#xff0c;Yaskawa&#xff0c;ABB&#xff0c;Kawasaki和FANUC等各种新型机器人。我们相信&#xff0c;我们真正地在协助第四次工业革命的进步&am…...

免费书画网站怎么做的/今日头条最新新闻消息

来自&#xff1a;美林大数据摘要: 数据挖掘分类技术从分类问题的提出至今&#xff0c;已经衍生出了很多具体的分类技术。下面主要简单介绍四种最常用的分类技术&#xff0c;不过因为原理和具体的算法实现及优化不是本书的重点&#xff0c;所以我们尽量用应用人员能够理解的语言…...

资讯类网站怎么做/谷歌seo搜索引擎

数据库设计说明书 1引言 1.1编写目的 本文档描述了机房收费系统数据库的设计&#xff0c;提供了数据库设计的可视性以及软件支持所需的信息&#xff0c;应用于机房收费系统开发前期&#xff0c;为后期的数据库设计指引方向&#xff0c;也可以为系统程序设计提供借鉴与参照。预…...

苏宁易购网站建设 的定位/网络营销论坛

http://acm.hdu.edu.cn/showproblem.php?pid1142 Dijkstra求最短路径&#xff0c;记录最短路径的条数&#xff0c;cnt记录最短路径的条数出错&#xff0c;不知道错在哪里&#xff1f; View Code 1 #include<iostream> 2 #include<cstring> 3 #include<clim…...

怎么做网站播放器/东莞网络排名优化

一&#xff0c;面向对象。 面向对象的程序设计&#xff1a;核心是对象二字&#xff0c;对象是特征与技能的结合体&#xff0c;基于面向对象设计程序就好比再创造一个世界&#xff0c;你就是这个世界的上帝&#xff0c;是一种‘上帝式’的思维方式。 优点&#xff1a; 解决了程序…...