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

【C++语言】类和对象--默认成员函数 (中)

在这里插入图片描述


文章目录

  • 前言
  • 类的六个默认成员函数:
    • 1. 构造函数
      • 概念
      • 特性
      • 做了什么?
      • 易错注意:
      • 显式定义和默认构造函数
    • 2. 析构函数
      • 概念
      • 特征
      • 做了什么?
      • 注意事项:
    • 3.拷贝构造函数
      • 概念
      • 特征
      • 做了什么?
      • 注意事项:
    • 4.赋值运算符重载
      • 运算符重载
      • 赋值运算符的重载
      • 注意事项:
    • 5.取地址及const取地址操作符重载
  • 总结
  • C++语言系列学习目录


前言

本节是要学习六个默认成员函数。主要是从四个方面讲解:
1)什么是该默认成员函数?
2)默认成员函数做了什么?
3)一些易错的注意事项
4)什么时候用默认成员函数,什么时候显式实现?
本篇用 日期类(Date)、栈(Stack) 、队列(Queue)三种类来举例


类的六个默认成员函数:

  • 如果一个类中什么成员都没有,简称为空类。
    空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。
    默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。
    在这里插入图片描述

1. 构造函数

构造函数就与我们所写的Init()方法一样,用于类对象属性的初始化。但这个构造函数不用用户调用,而是在类对象实例化时自动调用。

概念

构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有 一个合适的初始值,并且在对象整个生命周期内只调用一次。

特性

我们围绕第一个问题展开:什么是构造函数?
其有如下特征:

  1. 函数名与类名相同
  2. 无返回值
class Date
{
public://函数名和类名相同,无返回值Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << _year << "-" << _month << "-" << _day << endl;}
private:int _year;int _month;int _day;
};
  1. 函数可以重载
class Date
{
public://无参数Date(){_year = year;_month = month;_day = day;}/*//全缺省:注意全缺省和无参数不能同时存在,他们实例化方式可以相同,编译器无法辨别Date(int year=2024,int month=4,int day=27){_year = year;_month = month;_day = day;}*///半缺省Date(int year,int month=4,int day=27){_year = year;_month = month;_day = day;}//不缺省Date(int year, int month, int day){_year = year;_month = month;_day = day;}
private:int _year;int _month;int _day;
};
  1. 对象实例化时编译器自动调用
  2. 如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成。后面实例化对象按照显式定义的函数调用(举例看下面代码注释)

Date类举例:

class Date
{
public:/*// 5.如果用户显式定义了构造函数,编译器将不再生成默认构造函数,后面也不能用Date d1;这样实例化,而是采用Date d1(2024,4,27);这样来实例化对象;Date(int year, int month, int day){_year = year;_month = month;_day = day;}*/void Print(){cout << _year << "-" << _month << "-" << _day << endl;}
private:int _year;int _month;int _day;
};
int main()
{Date d1;d1.Print();return 0;
}

这里我们用Date实例化了个对象d1,调用Print函数打印日期,发现个问题如下图:
在这里插入图片描述
我们发现我们的实例化对象d1并没有初始化啊,那默认构造函数到底干了什么呢?

做了什么?

C++把类型分成内置类型(基本类型)和自定义类型。内置类型就是语言提供的数据类型,如:int/char…,自定义类型就是我们使用class/struct/union等自己定义的类型。默认生成的构造函数对两者处理不同:
1)内置类型不做处理;
2)自定义类型调用它自己的默认构造函数;

易错注意:

  1. 实例化对象,错误:
int main()
{Date d1;     //表示实例化一个Date类对象;Date d1();	 //表示一个返回值为Date的d1()函数方法;return 0;
}
  1. 无参数构造函数、全缺省构造函数、默认构造函数三种都可以当做默认构造函数,只能存在其中一个,不然会发生实例化时编译器不知道调用哪一个构造函数的错误。因为都可以用Date d1;来实例化对象。
  2. C++11 中针对内置类型成员不初始化的缺陷,又打了补丁,即:内置类型成员变量在类中声明时可以给默认值。
class Date
{
public:void Print(){cout << _year << "-" << _month << "-" << _day << endl;}
private://可以在这里给缺省值int _year=2024;int _month=4;int _day=27;
};
int main()
{Date d1;d1.Print();return 0;
}

在这里插入图片描述

显式定义和默认构造函数

那么什么时候我们采用显式定义,什么时候采用默认构造函数呢?
我给出的答案是,一般都自己显式定义比较好。
默认构造函数在以下几种情况下可以使用:

  1. 内置类型成员都具有缺省值(默认值);
  2. 类中全是自定义类型,如:Queue;

2. 析构函数

析构函数是一个特殊的成员函数,其名称与类名相同,前面加上波浪号(~)作为前缀。析构函数的主要作用是执行对象生命周期结束时的清理工作。当一个对象的生命周期结束时,无论是因为超出作用域、被显式删除,还是因为其所在的动态内存分配被释放,析构函数都会被自动调用。

概念

析构函数:与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成对象中资源的清理工作。

特征

那么什么是析构函数呢?
它有以下特征:

  1. 函数名就是在类名前加~;
  2. 无参数、无返回类型;
  3. 一个类只能由一个析构函数。若没有显示定义,系统自动调用默认析构函数。注意:析构函数不能够重载;
  4. 对象生命周期结束时,C++编译系统系统自动调用析构函数。

Stack类 举例:

class Stack {public://构造函数Stack(int capacity=4) {_a = (int*)malloc(sizeof(int) * capacity);if (NULL == _a){perror("malloc fail");return;}_capacity = capacity;_size = 0;}//析构函数:显式定义~Stack(){//释放动态调用的空间资源free(_a);_a = NULL;}private:int* _a;int _size;int _capacity;
};int main()
{{Stack s1(10);}//s1作用域结束自动调用 ~Stack();//不论显示定义,还是默认析构函数,都不需要显示调用;return 0;
}

在这里插入图片描述

做了什么?

默认析构函数做了什么?

  1. 内置类型不做处理;
  2. 自定义类型调用它的析构函数;

内置类型成员,销毁时不需要资源清理,最后系统直接将其内存回收即可

注意事项:

  1. 如果类中没有申请资源时,析构函数可以不写,直接使用编译器生成的默认析构函数,比如Date类;有资源申请时,一定要写,否则会造成资源泄漏,比如Stack类。
  2. Queue类,成员全是自定义类型,会调用成员各自的析构函数。所以不用调用析构函数。
  3. 只有堆上的资源需要手动释放。

3.拷贝构造函数

拷贝构造函数是C++中的一种特殊的构造函数,用于创建一个新对象,该对象是已存在对象的副本。拷贝构造函数在多种情况下会自动被调用。

概念

概念:拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。

特征

拷贝构造函数有以下特征:

  1. 拷贝构造函数是构造函数的重载形式。
  2. 拷贝构造函数的参数只有一个且必须是类类型对象的引用。
  3. 若未显式定义,编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。

Date类 举例:

class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}//拷贝构造函数 一个参数,必须是对象引用哦!!!Date(const Date& d){_year = d._year;_month = d._month;_day = d._day;}
private:int _year;int _month;int _day;
};int main()
{Date d1;//拷贝构造函数Date d2(d1);return 0;
}

做了什么?

默认拷贝构造:依旧是一样的,对内置类型进行浅拷贝,自定义类型调用它们自己的拷贝构造。不需要显示定义的类,比如:Date、Queue。需要显式定义的类,比如:Stack。因为有动态空间的开辟,所以需要深拷贝。

注意事项:

这个比较容易错,大家请注意!

  1. 默认拷贝构造只是浅拷贝,需要深拷贝的对象需要显示定义拷贝构造函数。
    举个Stack的例子:我们如果只是浅拷贝来处理Stack会出现错误。
比如:Stack s2(s1);
如果只是浅拷贝: s2._a=s1._a; 只是这种两个指针指向同一个开辟的空间;
  • 问:这种会出现怎样的问题呢?

  • 答:在函数结束的时候,s1调用一次析构函数,把空间释放了;s2也会在调用一次,此时原本空间已经被释放了,无法再次释放,会报错。

  1. 强调,显示定义拷贝构造函数,只能传一个参数并且必须为该类的引用。不能传值。
    原因:如果进行传值传参,会在过程中调用拷贝构造去拷贝一个data临时对象,用于传值。如下图,便无限的调用下去,没有结束点,进入死循环。所以发生报错。

在这里插入图片描述

4.赋值运算符重载

运算符重载

C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。
函数名字为:关键字 operator后面接需要重载的运算符符号。
函数原型:返回值类型 operator操作符(参数列表)
注意:

  1. 不能新增加运算符;
  2. 保持运算符具有原有语意;
  3. 不改变运算符原有操作数个数;(比如+,就只能两个对象进行)
  4. 作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐藏的this
  5. .* :: sizeof ?: . 注意以上5个运算符不能重载。这个经常在笔试选择题中出现。

赋值运算符的重载

1. 赋值运算符重载格式
参数类型:const T&,传递引用可以提高传参效率
返回值类型:T&,返回引用可以提高返回的效率,有返回值目的是为了支持连续赋值
检测是否自己给自己赋值
返回*this :要复合连续赋值的含义

Date类 举例:

class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}//拷贝构造函数Date(const Date& d){_year = d._year;_month = d._month;_day = d._day;}//赋值运算符重载Date& operator=(const Date& d){if (this != &d){_year = d._year;_month = d._month;_day = d._day;}return *this;}
private:int _year;int _month;int _day;
};int main()
{Date d1(2024,5,5);//拷贝构造函数Date d2(2024,5,6);Date d3;d3 = d1 = d2;return 0;
}

在这里插入图片描述

注意事项:

  1. 赋值运算符重载是默认构造函数,不写,会进行简单的赋值和浅拷贝类似。通常需要为包含动态分配内存的类重载赋值运算符,以执行深拷贝操作。深拷贝意味着为新对象分配新的内存,并复制原对象所指向的内存内容,从而确保两个对象独立拥有自己的内存资源。
  2. 注意区分什么是赋值,什么时候是构造:
Date d1(2024,5,5); //构造
Date d2 = d1;      //构造
Date d3; 
d3=d1;             //赋值
辨别方法:已存在的对象初始化另一个对象叫构造;两个都存在的对象,则是赋值。
//小技巧:看前面有没有Date 类

5.取地址及const取地址操作符重载

这两个默认成员函数一般不用重新定义 ,编译器默认会生成。

class Date
{
public :
Date* operator&()
{
return this ;
}
const Date* operator&()const
{
return this ;
}
private :
int _year ; // 年
int _month ; // 月
int _day ; // 日
};

这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需要重载,比如想让别人获取到指定的内容!


总结

本章节介绍了四个主要的默认成员函数,还有两个不常用就没有过多介绍。


C++语言系列学习目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加,添加超链接

相关文章:

【C++语言】类和对象--默认成员函数 (中)

文章目录 前言类的六个默认成员函数&#xff1a;1. 构造函数概念特性做了什么&#xff1f;易错注意&#xff1a;显式定义和默认构造函数 2. 析构函数概念特征做了什么?注意事项&#xff1a; 3.拷贝构造函数概念特征做了什么&#xff1f;注意事项&#xff1a; 4.赋值运算符重载…...

前端递归常见应用

概览 在 JavaScript 中&#xff0c;递归是一种编程技术&#xff0c;指的是函数直接或间接调用自身的过程。 递归通常用于解决可以分解为相同子问题的问题。通过不断地将问题分解成更小的、相似的子问题&#xff0c;直到达到某种基本情况&#xff08;不再需要进一步递归的简单情…...

AI工具如何改变我们的工作与生活

AI工具在当今社会中扮演着越来越重要的角色&#xff0c;它们已经开始改变着我们的工作方式和生活方式。在接下来的2000字篇幅中&#xff0c;我将详细探讨AI工具如何影响我们的工作和生活。 AI工具在工作中的影响&#xff1a; 自动化和智能化生产流程&#xff1a; AI工具可以通…...

深入了解C/C++的内存区域划分

&#x1f525;个人主页&#xff1a;北辰水墨 &#x1f525;专栏&#xff1a;C学习仓 本节我们来讲解C/C的内存区域划分&#xff0c;文末会附加一道题目来检验成果&#xff08;有参考答案&#xff09; 一、大体有哪些区域&#xff1f;分别存放什么变量开辟的空间&#xff1f; …...

C++构造函数和析构函数的调用顺序

一般情况下&#xff0c;调用析构函数的次序正好与调用构造函数的次序相反&#xff0c;也就是最先被调用的构造函数&#xff0c;其对应的析构函数最后被调用&#xff0c;而最后被调用的构造函数&#xff0c;其对应的析构函数最先被调用。 当然对象的构造函数和析构函数调用时机和…...

智能家居1 -- 实现语音模块

项目整体框架: 监听线程4&#xff1a; 1. 语音监听线程:用于监听语音指令&#xff0c; 当有语音指令过来后&#xff0c; 通过消息队列的方式给消息处理线程发送指令 2. 网络监听线程&#xff1a;用于监听网络指令&#xff0c;当有网络指令过来后&#xff0c; 通过消息队列的方…...

Leetcode 3139. Minimum Cost to Equalize Array

Leetcode 3139. Minimum Cost to Equalize Array 1. 解题思路2. 代码实现 题目链接&#xff1a;3139. Minimum Cost to Equalize Array 1. 解题思路 这一题是一道hard的题目&#xff0c;而且看了一下答出率低的离谱&#xff0c;就一开始被吓到了&#xff0c;不过实际做了一下…...

【element-ui】el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题

el-table横向滚动后&#xff0c;通过is-scrolling-left获取滚动高度失效的问题 需求 现在有一个需求&#xff0c;需要监听el-table的纵向滚动&#xff0c;当滚动高度达到特定值时进行一些操作。 代码如下&#xff1a; methods:{throttledHandleScroll() {// 如果已经有定时器…...

JAVA中的日期

获取当前的日期 LocalDate LocalDate today LocalDate.now();System.out.println("今天是:"today);//今天是:2024-05-06String format today.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日"));System.out.println("今天是&#xff1a;"…...

一起了解开源自定义表单的优势表现

随着社会的进步和科技的发展&#xff0c;越来越多的中小企业希望采用更为先进的软件平台&#xff0c;助力企业实现高效率的流程化管理。低代码技术平台、开源自定义表单已经慢慢走入大众视野&#xff0c;成为一款灵活、高效的数字化转型工具。流辰信息专注于低代码技术平台的研…...

体育老师工资高吗,奖金有吗

教师的薪资水平与多种因素相关&#xff0c;包括教育经验、工作地点、学校类型以及个人的教学成果等。在讨论体育教师的工资问题时&#xff0c;不能仅仅关注数字&#xff0c;更应了解教育价值和个人发展。 初中体育教师的工资水平受多种因素影响。根据网络统计的数据&#xff0c…...

Linux驱动开发——(十一)INPUT子系统

目录 一、input子系统简介 二、input驱动API 2.1 input字符设备 2.2 input_dev结构体 2.3 上报输入事件 2.4 input_event结构体 三、代码 3.1 驱动代码 3.2 测试代码 四、平台测试 一、input子系统简介 input子系统是管理输入的子系统&#xff0c;和pinctrl、gpio子…...

大数据毕业设计Python+Django旅游景点评论数据采集分析可视化系统 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习 人工智能 计算机毕业设计

毕业论文&#xff08;设计&#xff09;开题报告 学生姓名 学 号 所在学院 信息工程学院 专 业 指导教师姓名 指导教师职称 工程师 助教 指导教师单位 论文&#xff08;设计&#xff09;题目 基于朴素贝叶斯算法旅游景点线上评价情感分析 开 题 报 告…...

FSNotes for Mac v6.7.1中文激活版:强大的笔记管理工具

FSNotes for Mac是一款功能强大的文本处理与笔记管理工具&#xff0c;为Mac用户提供了一个直观、高效的笔记记录和整理平台。 FSNotes for Mac v6.7.1中文激活版下载 FSNotes支持Markdown语法&#xff0c;使用户能够轻松设置笔记格式并添加链接、图像等元素&#xff0c;实现笔记…...

课程34:Windows Docker部署.Net Core项目

这里写目录标题 🚀前言一、安装Docker Desktop1.1 官网下载Docker1.2 安装Docker1.2.1 选择配置,默认都勾选1.2.2 安装中1.2.3 安装成功1.2.4 启动1.2.5 启动成功二、.Net Core 项目发布与部署2.1 修改Dockerfile文件2.2 Web项目发布2.3 修改配置2.3.1 修改dockerfile<...

分布式与一致性协议之ZAB协议(四)

ZAB协议 ZooKeeper是如何选举领导者的。 首先我们来看看ZooKeeper是如何实现成员身份的&#xff1f; 在ZooKeeper中&#xff0c;成员状态是在QuorumPeer.java中实现的&#xff0c;为枚举型变量 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING }其实&…...

在M1芯片安装鸿蒙闪退解决方法

在M1芯片安装鸿蒙闪退解决方法 前言下载鸿蒙系统安装完成后&#xff0c;在M1 Macos14上打开闪退解决办法接下来就是按照提示一步一步安装。 前言 重新安装macos系统后&#xff0c;再次下载鸿蒙开发软件&#xff0c;竟然发现打不开。 下载鸿蒙系统 下载地址&#xff1a;http…...

Linux基础-socket详解、TCP/UDP

文章目录 一、Socket 介绍二、Socket 通信模型三、Socket 常用函数1 创建套接字2 绑定套接字3、监听连接4、接受连接5、接收和发送数据接收数据发送数据 6、关闭套接字 四、Socket编程试验1、源码server.cclient.c 2、编译&#xff1a;3、执行结果 五、补充TCP和UDP协议的Socke…...

【菜单下拉效果】基于jquery实现二级菜单下拉效果(附完整源码下载)

Js菜单下拉特效目录 &#x1f354;涉及知识&#x1f964;写在前面实现效果&#x1f367;一、涉及知识&#x1f333;二、具体实现2.1 搭建一级菜单2.2 搭建二级菜单项2.3 引入js文件2.4 构建CSS文件 &#x1f40b;三、源码获取&#x1f305; 作者寄语 &#x1f354;涉及知识 ht…...

如何使用resource-counter统计跨Amazon区域的不同类型资源数量

关于resource-counter resource-counter是一款功能强大的命令行工具&#xff0c;该工具基于纯Python 3开发&#xff0c;可以帮助广大研究人员跨Amazon区域统计不同类型资源的数量。 该工具在统计完不同区域的各类资源数量后&#xff0c;可以在命令行中输出并显示统计结果。res…...

nextTick的作用与原理

在 Vue 中&#xff0c;nextTick允许我们延迟执行一段代码&#xff0c;直到 Vue完成其当前的 DOM 更新周期。这使得我们可以在 DOM 更新后安全地访问和修改 DOM 元素。 一、Vue 的异步更新策略 Vue 采用了一种称为异步更新策略的机制。这意味着当数据发生变化时&#xff0c;Vue…...

mybatis工程需要的pom.xml,以及@Data 、@BeforeEach、@AfterEach 的使用,简化mybatis

对 “mybatis - XxxMapper.java接口中方法的参数 和 返回值类型&#xff0c;怎样在 XxxMapper.xml 中配置的问题” 这篇文章做一下优化 这个pom.xml文件&#xff0c;就是上面说的这篇文章的父工程的pom.xml&#xff0c;即&#xff1a;下面这个pom.xml 是可以拿来就用的 <?…...

微信小程序demo-----制作文章专栏

前言&#xff1a;不管我们要做什么种类的小程序都涉及到宣传或者扩展其他业务&#xff0c;我们就可以制作一个文章专栏的页面&#xff0c;实现点击一个专栏跳转到相应的页面&#xff0c;页面可以有科普类的知识或者其他&#xff0c;然后页面下方可以自由发挥&#xff0c;添加联…...

Linux migrate_type初步探索

1、基础知识 我们都知道Linux内存组织管理结构架构&#xff0c;顶层是struct pglist_data&#xff0c;然后再到struct zone&#xff0c;最后是struct page。大概的管理结构是这样的&#xff1a; 根据物理内存的地址范围可划分不同的zone&#xff0c;每个zone里的内存由buddy…...

i.MX 6ULL 裸机 IAR 环境安装

一. IAR 的安装请自行搜索 二. 使用最新版本的 IAR&#xff0c;需要修改 SDK 1. 在 SDK 的 core_ca7.h 加上 #include "intrinsics.h" /* IAR Intrinsics */ 2. debug 时需要修改每个工程下的 ddr_init.jlinkscript&#xff0c;参考链接 Solved: How to conn…...

cmake进阶:文件操作

一. 简介 前面几篇文章学习了 cmake的文件操作&#xff0c;写文件&#xff0c;读文件。文章如下&#xff1a; cmake进阶&#xff1a;文件操作之写文件-CSDN博客 cmake进阶&#xff1a;文件操作之读文件-CSDN博客 本文继续学习文件操作。主要学习 文件重命名&#xff0c;删…...

在UI界面中播放视频_unity基础开发教程

在UI界面中播放视频_unity基础开发教程 前言操作步骤结语 前言 之前我写过一篇在场景中播放视频的文章&#xff0c;但是在开发中有时候也会在UI的界面中播放视频&#xff0c;这期我们做一下在UI的界面中播放视频。 操作步骤 首先在场景中创建一个Raw Image&#xff0c;UI->…...

TypeScipt 联合类型 | 号的使用

联合类型有两种使用方法&#xff1a; 一种类型中多个可能的值。具有多种不同的类型中的一种。 一种类型中多个可能的值。 type isAye true | false;const aye:isAye true; const aye1:isAye false; const aye2:isAye 3; // Type number is not assignable to type isAye…...

MATLAB 变换

MATLAB 变换&#xff08;Transforms&#xff09; MATLAB提供了用于处理诸如Laplace和Fourier变换之类的变换的命令。转换在科学和工程中用作简化分析和从另一个角度查看数据的工具。 例如&#xff0c;傅立叶变换允许我们将表示为时间函数的信号转换为频率函数。拉普拉斯变换使…...

【005_音频开发_基础篇_ALSA_Codec_驱动-MA120x0P功放】

005_音频开发_基础篇_ALSA_Codec_驱动-MA120x0P功放 文章目录 005_音频开发_基础篇_ALSA_Codec_驱动-MA120x0P功放创作背景MA120X0P输出模式BTLSEPBTLSEBTL 硬件配置方式/硬件Limiter限幅器限幅器作用过程 主要寄存器操作指令 ma120x0p.cma120x0p.h 创作背景 学历代表过去、能…...

广州建站业务公司/九个关键词感悟中国理念

问题描述 一只青蛙一张嘴&#xff0c; 两只眼睛四条腿 两只青蛙两张嘴&#xff0c;四只眼睛八条腿 ⋯ ——— 来自未来的ACM社团的破冰游戏玩起了数青蛙的游戏 这个游戏对于通过大脑来计算的&#x1f43e;毛毛&#x1f43e;同学来说太困难了&#xff0c;而对于用CPU计算的小…...

网络营销课程设置/小程序seo

エスケープとは、HTML上で特殊文字を期待通りに表示するために施す処理のことです 指定された文字列中に存在する SQL 上特別な意味を持つ文字をエスケープします. package exam;import com.sun.deploy.util.StringUtils;public class Test4 {public static void main(String[]…...

验证码平台网站开发/培训课程有哪些

1、使用Python3 内部提供的http.server python -m http.server&#xff08;默认端口8000&#xff09;。 默认情况下它会以当前运行目录为根目录&#xff0c;建立HTTP服务。如果当前目录存在index.html或者index.htm文件&#xff0c;那么默认会读取该文件作为首页访问&#xff1…...

深圳牌申请网站空间/百度关键词优化推广

互联网&#xff0c;本质即连接&#xff0c;一直以来&#xff0c;互联网企业也被看作是最好的“连接器”&#xff1a;社交软件连接了人和人&#xff0c;电商连接了商家与消费者&#xff0c;O2O连接了线上与线下&#xff0c;流媒体平台连接了内容与观众&#xff0c;共享经济连接了…...

自贡网站建设公司/武汉百度推广优化

一、已知mysql数据库root的密码,修改root的方法如下: 1. mysqladmin 命令直接修改: ~]#mysqladmin -u root -p password "newpassword" 2.进入mysql环境使用update: mysql> update mysql.user set passwordpassword(newpassword) where user root; mysql> flus…...

wordpress升级php异常/长沙网站优化对策

项目介绍 一款 PHP 语言基于 Laravel9.x、Layui、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&…...