【c++】类和对象(五)赋值运算符重载
🔥个人主页:Quitecoder
🔥专栏:c++笔记仓
朋友们大家好,本篇文章带大家认识赋值运算符重载,const成员,取地址及const取地址操作符重载等内容
目录
- 1.赋值运算符重载
- 1.1运算符重载
- 1.1.1特性:
- 1.2赋值运算符重载
- 1.3 赋值运算符的其他性质
- 1.4前置++和后置++重载
- 2.const成员函数
- 3.取地址及const取地址操作符重载
1.赋值运算符重载
1.1运算符重载
运算符重载是一种编程语言特性,它允许开发者为已有的运算符提供自定义的实现。这意味着你可以改变某些运算符在你自定义的类或数据类型上的行为。比如,你可以定义加号运算符(+)如何在你自定义的数据结构上进行运算
什么意思呢,我们来讲解:首先我们定义日期类Date,并实例化两个对象:
class Date
{
public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}int _year;int _month;int _day;
};
int main()
{Date d1(2018, 9, 26);Date d2(2024, 3, 29);return 0;
}
我们如何判断两个年份相等呢?
如果是常规方法,我们会写一个比较函数,来判断是否相同:
bool issame(const Date& d1, const Date& d2)
{return d1._year == d2._year&& d1._month == d2._month&& d1._day == d2._day;
}
int main()
{Date d1(2018, 9, 26);Date d2(2024, 3, 29);cout << issame(d1, d2) << endl;return 0;
}
那如果我们想直接通过用d1==d2
来判断是否相同呢?这里就用到了操作符重载
运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似,注意这里说的重载与我们的函数重载不是一个意思
函数名字为:关键字operator后面接需要重载的运算符符号
bool operator==(const Date& d1, const Date& d2)
{return d1._year == d2._year&& d1._month == d2._month&& d1._day == d2._day;
}
int main()
{Date d1(2018, 9, 26);Date d2(2024, 3, 29);cout << (d1==d2) << endl;return 0;
}
我们发现,直接进行判断时,调用了比较函数
但是这里是全局的定义的operator==
,这里会发现运算符重载成全局的就需要成员变量是公有的,即我的成员不能是private
私有的,那么封装性如何保证?
class Date
{
public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}bool operator==(const Date & d2){return _year == d2._year&& _month == d2._month&& _day == d2._day;}
private:int _year;int _month;int _day;
};
bool operator==(const Date& d2)
{return _year == d2._year&& _month == d2._month&& _day == d2._day;
}
这部分是Date
类中==
运算符的重载。这个重载让你可以使用==
来比较两个Date
对象是否相等,即它们的年、月、日是否都相同
关键点讲解
- 参数:
operator==
函数接受一个类型为const Date&
的参数d2
,它是比较操作的右侧操作数。左侧操作数是调用这个函数的对象,即this
指针指向的对象 const
关键字:参数使用const
修饰符和引用传递来保证效率和避免不必要的拷贝,同时确保不会修改传入的对象- 函数体:函数体中,通过比较两个
Date
对象的年、月、日字段来决定这两个对象是否相等。如果所有字段都相等,则返回true
;否则,返回false
我们接着调用这个函数:
int main()
{Date d1(2018, 9, 26);Date d2(2024, 3, 29);cout << d1.operator==(d2) << endl;cout << (d1==d2) << endl;return 0;
}
注意
注意这里的顺序,d1在前与在后是不同的,如果我们写一个小于函数的运算符重载,顺序不同,意思刚好相反
我们有两种方式进行调用,这两种方式是相同的:
在上面的讲解之后,相信大家对运算符重载有了一定的了解,他就是允许自定义对象使用运算符,它的返回值是根据运算符来决定的,比如完成加减操作,我们就返回int类型,判断是否大于小于,就用bool类型
1.1.1特性:
- 不能通过连接其他符号来创建新的操作符:比如operator@
- 重载操作符必须有一个类类型参数(自定义类型参数)
- 用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不能改变其含义作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐藏的this
.*
::
sizeof
?:
.
注意以上5个运算符不能重载。这个经常在笔试选择题中出现
1.2赋值运算符重载
我们知道,拷贝赋值有两种,拷贝构造和赋值重载,我们看拷贝构造:
Date d1(2018, 9, 26);
Date d2(d1);
那如果我们用赋值运算符重载呢?可以写成下面的形式:
d2=d1;
关键区别:
- 拷贝构造函数在对象创建时使用,用于初始化新对象。赋值运算符重载在对象已存在时使用,用于将一个对象的值赋给另一个对象
- 目的:拷贝构造函数的目的是创建一个新的、状态相同的对象副本。赋值运算符的目的是改变一个已存在对象的状态,使其与另一个对象的状态相同
- 拷贝构造函数通常接收一个对同类对象的常引用。赋值运算符重载通常返回对象的引用,并接收一个对同类对象的常引用作为参数
我们接下来讲解赋值运算符重载的具体实现来体现上面的特点:
能不能直接这么写呢?:
void operator=(const Date& d)
{_year = d._year;_month = d._month;_day = d._day;
}
这个在单个赋值是可以的,那如果,我想像c语言一样同时实现多个变量的连续赋值的场景呢?
int b;
int c;
b=c=10;
那我们这个函数就无法满足要求了,我们该如何修改呢?
我们不妨探讨连续赋值的本质:
b=c=10;
这里执行步骤:
- 10赋值给c,
c=10
这个表达式返回值为左操作数c - c再作为
b=c
的有操作数给b赋值,返回值为左操作数b
所以,我们的自定义类型也要符合这里的行为
所以,我们需要对函数进行修改:
第一次修改:
Date operator=(const Date& d)
{_year = d._year;_month = d._month;_day = d._day;return *this;
}
返回左操作数,返回*this
我们这里用的是传值返回,意味着这里返回的不是*this
,返回的是*this
的拷贝,则需要调用拷贝构造函数:
所以我们需要再次修改:
第二次修改:
Date& operator=(const Date& d)
{_year = d._year;_month = d._month;_day = d._day;return *this;
}
我们返回引用
还有一个问题,如果自身给自身赋值呢?
d1=d1;
为什么自赋值不行?
自赋值在大多数情况下是可以工作的,但是在特定的情况下,如果没有正确处理,它可能会引起错误或意外的行为。考虑自赋值的主要原因是为了确保当对象赋值给自身时,程序仍然能够正确、安全地运行
特别是在类中涉及到动态内存管理时,不正确处理自赋值可能会导致问题。例如,假设一个类内部分配了动态内存,如果在赋值操作中首先释放了这块内存(预备重新分配),而源对象和目标对象实际上是同一个对象,那么这个操作实际上会破坏源对象的状态,导致未定义行为
我们还需要再次修改一次:
Date& operator=(const Date& d)
{if (this != &d){_year = d._year;_month = d._month;_day = d._day;}return *this;
}
我们这里判断条件是地址的比较,如果地址不相同说明不是同一个对象,可以赋值
1.3 赋值运算符的其他性质
赋值运算符只能重载成类的成员函数不能重载成全局函数
我们首先得把成员类型设置为公有的,发现还是报错,
原因:赋值运算符如果不显式实现,编译器会生成一个默认的。此时用户再在类外自己实现一个全局的赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是类的成员函数
如果我们不写赋值运算符重载,编译器是否会默认生成呢?
结果是会生成的
所以这里与我们拷贝构造等函数性质一致:
用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。注意:内置类型成员变量是直接赋值的,而自定义类型成员变量需要调用对应类的赋值运算符重载完成赋值
既然编译器生成的默认赋值运算符重载函数已经可以完成字节序的值拷贝了,还需要自己实现吗?
答案是需要的,如遇到下面的动态内存管理
typedef int DataType;
class Stack
{
public:Stack(size_t capacity = 10){_array = (DataType*)malloc(capacity * sizeof(DataType));if (nullptr == _array){perror("malloc申请空间失败");return;}_size = 0;_capacity = capacity;}void Push(const DataType& data){// CheckCapacity();_array[_size] = data;_size++;}~Stack(){if (_array){free(_array);_array = nullptr;_capacity = 0;_size = 0;}}
private:DataType* _array;size_t _size;size_t _capacity;
};
int main()
{Stack s1;s1.Push(1);s1.Push(2);s1.Push(3);s1.Push(4);Stack s2;s2 = s1;return 0;
}
- s1对象调用构造函数创建,在构造函数中,默认申请了10个元素的空间,然后存了4个元素1 2 3 4
- s2对象调用构造函数创建,在构造函数中,默认申请了10个元素的空间,没有存储元素
- 由于Stack没有显式实现赋值运算符重载,编译器会以浅拷贝的方式实现一份默认的赋值运算符重载即只要发现Stack的对象之间相互赋值,就会将一个对象中内容原封不动拷贝到另一个对象中
- s2 = s1;当s1给s2赋值时,编译器会将s1中内容原封不动拷贝到s2中,这样会导致两个问题:
- s2原来的空间丢失了,存在内存泄漏
- s1和s2共享同一份内存空间,最后销毁时会导致同一份内存空间释放两次而引起程序崩溃
注意
如果类中未涉及到资源管理,赋值运算符是否实现都可以;一旦涉及到资源管理则必须要实现。
1.4前置++和后置++重载
在C++中,前置++和后置++运算符都可以被重载,以提供用户定义类型(比如类)的自增功能。它们之间的主要区别在于参数和返回值,这影响了它们的使用和效率
前置++
前置++直接对对象进行自增操作,并返回自增后的对象引用。这意味着它在自增后立即返回对象的状态,使得操作可以立即反映在对象上
Date& operator++(){_day += 1;return *this;}
后置++
前置++和后置++都是一元运算符,为了让前置++与后置++形成能正确重载C++规定:后置++重载时多增加一个int类型的参数,但调用函数时该参数不用传递,编译器自动传递
注意:后置++是先使用后+1,因此需要返回+1之前的旧值,故需在实现时需要先将this保存一份,然后给this+1
Date operator++(int){Date temp(*this);_day += 1;return temp;}
temp是临时对象,因此只能以值的方式返回,不能返回引用
2.const成员函数
假如我们现在定义一个const对象,想访问它的Print函数,我们发现是调用不了的:
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << "Print()" << endl;cout << "year:" << _year << endl;cout << "month:" << _month << endl;cout << "day:" << _day << endl << endl;}
private:int _year; // 年int _month; // 月int _day; // 日
};
这里权限进行放大了,接着,我们来介绍const成员函数
原来是const Date*
,而我的this类型是Date*
,意味着需要将this指针也改为const Date*
,所以才有了下面的函数
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改,内容是只读的
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << "Print()" << endl;cout << "year:" << _year << endl;cout << "month:" << _month << endl;cout << "day:" << _day << endl << endl;}void Print() const{cout << "Print()const" << endl;cout << "year:" << _year << endl;cout << "month:" << _month << endl;cout << "day:" << _day << endl << endl;}
private:int _year; // 年int _month; // 月int _day; // 日
};
void Test()
{Date d1(2022,1,13);d1.Print();const Date d2(2022,1,13);d2.Print();
}
我们查看结果:
如果没有const修饰的函数呢,我Date类型的对象能否调用const成员函数呢?
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print() const{cout << "Print()const" << endl;cout << "year:" << _year << endl;cout << "month:" << _month << endl;cout << "day:" << _day << endl << endl;}
private:int _year; int _month; int _day;
};
void main()
{Date d1(2022, 1, 13);d1.Print();
}
可以的,这里是权限的缩小
请思考下面的几个问题:
- const对象可以调用非const成员函数吗? 不可以,权限放大
- 非const对象可以调用const成员函数吗? 可以,权限缩小
- const成员函数内可以调用其它的非const成员函数吗? 不可以,权限放大
- 非const成员函数内可以调用其它的const成员函数吗?可以,权限缩小
指针和引用才存在权限放大
3.取地址及const取地址操作符重载
class Date
{
public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}Date* operator&(){return this;}const Date* operator&()const{return this;}
private:int _year; // 年int _month; // 月int _day; // 日
};
这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需要重载,比如想让别人获取到指定的内容!
这里是默认成员函数,我们删去这两个函数照样可以取地址
class Date
{
public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}
private:int _year; // 年int _month; // 月int _day; // 日
};
所以,我们没有必要深究这个东西究竟有什么用,我们只进行简单的语法了解即可
当然,如果你想让它普通对象定义后只能返回空值,你可以这么写:
class Date
{
public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}Date* operator&(){return nullptr;}
private:int _year; int _month; int _day;
};
日常并没有这种需要
本节内容到此结束!!!感谢大家阅读!!
相关文章:
【c++】类和对象(五)赋值运算符重载
🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章带大家认识赋值运算符重载,const成员,取地址及const取地址操作符重载等内容 目录 1.赋值运算符重载1.1运算符重载1.1.1特性&#…...
密码学基础-对称密码/公钥密码/混合密码系统 详解
密码学基础-对称密码/公钥密码 加解密说明1.加密解密必要因素加密安全性说明 什么是对称密码图示说明对称密码详解什么是DES?举例说明 什么是3DES什么是AES? 公钥密码什么是RSA? 对称密钥和公钥密码优缺点对比对称密码对称密码算法总结对称密码存在的问题? 公钥密码公钥密码…...
《装饰器模式(极简c++)》
本文章属于专栏- 概述 - 《设计模式(极简c版)》-CSDN博客 模式说明: 方案: 装饰类和派生类同根,然后装饰类中放一个派生类,以在接口不动的情况下增加功能优点: 可以灵活地扩展对象功能…...
Spring Boot 整合分布式搜索引擎 Elastic Search 实现 自动补全功能
文章目录 ⛄引言一、分词器⛅拼音分词器⚡自定义分词器 二、自动补全查询三、自动补全⌚业务需求⏰实现酒店搜索自动补全 四、效果图⛵小结 ⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,…...
实现一个Google身份验证代替短信验证
最近才知道公司还在做国外的业务,要实现一个登陆辅助验证系统。咱们国内是用手机短信做验证,当然 这个google身份验证只是一个辅助验证登陆方式。看一下演示 看到了嘛。 手机下载一个谷歌身份验证器就可以 。 谷歌身份验证器,我本身是一个基…...
Spring框架与Spring Boot的区别和联系
引言 Spring框架和Spring Boot都是Java生态中最受欢迎的开源框架,它们各自扮演着不同的角色,帮助开发者构建高效的企业级应用。本教程将从零基础的角度出发,让你轻松理解这两者的区别和联系。 Spring框架简介 Spring框架,简称Spri…...
[OpenCV学习笔记]Qt+OpenCV实现图像灰度反转、对数变换和伽马变换
目录 1、介绍1.1 灰度反转1.2 图像对数变换1.3 图像伽马变换 2、效果图3、代码实现4、源码展示 1、介绍 1.1 灰度反转 灰度反转是一种线性变换,是将某个范围的灰度值映射到另一个范围内,一般是通过灰度的对调,突出想要查看的灰度区间。 S …...
【大数据】Flink学习笔记
文章目录 认识FlinkDocker安装Flink基本概念Flink的特点Flink 和 Spark Streaming 对比 基本使用WordCount实现依赖 批模式代码流模式代码网络流模式代码在web UI上提交代码创建项目[^1]编写代码配置打包在Web UI上提交 Flink 架构系统架构核心概念并行度算子链(Opeartor Chain…...
社交网络的未来:Facebook如何塑造数字社交的下一章
引言 社交网络已成为我们生活中不可或缺的一部分,而Facebook作为其领军者,一直在塑造着数字社交的未来。本文将深入探讨Facebook在未来如何塑造数字社交的下一章,并对社交网络的发展趋势进行展望和分析。 1. 引领虚拟社交的潮流 Facebook将…...
RabbitMQ 延时消息实现
1. 实现方式 1. 设置队列过期时间:延迟队列消息过期 死信队列,所有消息过期时间一致 2. 设置消息的过期时间:此种方式下有缺陷,MQ只会判断队列第一条消息是否过期,会导致消息的阻塞需要额外安装 rabbitmq_delayed_me…...
【Django】枚举类型数据
模型 在模型里主要增加两项内容: 枚举表字段增加choices class Snort(CoreModel):PAGE_TYPE_CHOICES [(1, 失陷主机检测), # 1是保存到数据库里的数据,失陷主机检测是显示在前端的(2, 远程漏洞攻击检测),(3, 可疑流量行为),(4, WEB检测),]page_type…...
java实现https连接总是要报no cipher suites in common
遇到“no cipher suites in common”这样的错误通常意味着客户端和服务器之间没有共同支持的加密套件(Cipher Suite)。这个问题可能由多个原因引起,包括但不限于SSL/TLS配置错误、Java安全策略限制、客户端或服务器不支持的加密算法等。解决这…...
[C++初阶] 爱上C++ : 与C++的第一次约会
🔥个人主页:guoguoqiang 🔥专栏:我与C的爱恋 本篇内容带大家浅浅的了解一下C中的命名空间。 在c中,名称(name)可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大,名称…...
STM32技术打造:智能考勤打卡系统 | 刷卡式上下班签到自动化解决方案
文章目录 一、简易刷卡式打卡考勤系统(一)功能简介原理图设计程序设计 哔哩哔哩: https://www.bilibili.com/video/BV1NZ421Y79W/?spm_id_from333.999.0.0&vd_sourcee5082ef80535e952b2a4301746491be0 一、简易刷卡式打卡考勤系统 &…...
module ‘numpy‘ has no attribute ‘int‘
在 NumPy 中,如果遇到了错误提示 "module numpy has no attribute int",这通常意味着正在尝试以错误的方式使用 NumPy 的整数类型。从 NumPy 1.20 版本开始,numpy.int 已经不再是一个有效的属性,因为 NumPy 不再推荐使用…...
MFC(一)搭建空项目
安装MFC支持库 创建空白桌面程序 项目相关设置 复制以下代码 // mfc.h #pragma once #include <afxwin.h>class MyApp : public CWinApp { public:virtual BOOL InitInstance(); };class MyFrame : public CFrameWnd { public:MyFrame();// 消息映射机制DECLARE_…...
OKCC的API资源管理平台怎么用?
API资源管理平台,重点是“资源”管理平台,不是API接口管理平台。 天天讯通推出的API资源管理平台,类似昆石的VOS系统,区别是VOS是SIP资源管理系统,我们的API资源管理平台是API资源管理系统(AXB、AX、回拨AP…...
CentOS 7 安装python 3.7 需要必要的依赖。
在 CentOS 7 上部署 Python 3.7 可以通过源代码编译安装来实现。以下是大致的步骤: 安装必要的依赖: bashCopy Code sudo yum install gcc openssl-devel bzip2-devel libffi-devel 下载 Python 3.7 源代码并进行编译安装: bashCopy Code wg…...
美术馆设计方案优化布局与设施提升观众体验!
如今,美术馆不仅仅是作为展示艺术作品的平台,也是吸引公众参与和创造独特体验的数字艺术体验空间,因此许多传统美术馆在进行翻修改造时,都会更加注重用户体验,并在其中使用大量的多媒体互动,让参观者能够在…...
数据库基础原理
宏观 数据库的实现原理分为四个部分: 网络通信 网络协议 硬盘存储 内存分配 微观 硬盘存储 数据库是持久化的,而持久化如何实现的,我们不难想到磁盘可以持久化存储,所以数据库所有持久化的数据都是以文件形式存在磁盘中的…...
Pandas操作MultiIndex合并行列的Excel,写入读取以及写入多余行及Index列处理,插入行,修改某个单元格的值,多字段排序
Pandas操作MultiIndex合并行列的excel,写入读取以及写入多余行及Index列处理,多字段排序尽量保持原来的顺序 1. 效果图及问题2. 源码参考 今天是谁写Pandas的 复合索引MultiIndex,写的糊糊涂涂,晕晕乎乎。 是我呀… 记录下&#…...
工作总结5
1.taro框架使用map标签出现的错误 这个问题困扰很长时间,在频繁切换页面渲染的时候出现左边不显示,我理解的是变量没有到达map标签的属性上,那我就想是不是setState太慢了,然后又用了变量,本地缓存等,都没有…...
速通汇编(二)汇编mov、addsub指令
一,mov指令 mov指令的全称是move,从字面上去理解,作用是移动(比较确切的说是复制)数据,mov指令可以有以下几种形式 无论哪种形式,都是把右边的值移动到左边 mov 寄存器,数据&#…...
软考 - 系统架构设计师 - 构件组装技术
概念 构件组装是将库中的构件经修改后相互连接,或者将它们和当前开发项目中的软件元素进行连接,最终构成新的目标构件。 构件组装技术是基于构件的软件开发的核心技术,也是构件技术研究的重点和难点。构件组装的目的是利用现有的构件组装成新…...
2010年之前电脑ubuntu安装nvidia驱动黑屏处理
装好驱动 仿真fps直接到60Hz 陈旧设备 都是非常老旧的电脑,没钱换新电脑,就这么穷…… 电脑详细配置: 冲动 想装显卡驱动提升一下性能,结果……黑了 黑习惯了也无所谓,几分钟就能解决,关键还是太穷&…...
类与对象中C++
加油!!! 文章目录 前言 一、类的6个默认成员函数 编辑 二、构造函数 1.概念 三、析构函数 1.概念 2.特性 四、拷贝构造函数 1.概念 2.特征 拷贝构造函数典型调用场景 五、赋值运算符重载 1.运算符重载 2.赋值运算符重载 赋值运算符重载格式…...
k8s 集群重启报错:The connection to the server 192.168.92.26:6443 was refused
[rootk8s-master ~]# kubectl get node The connection to the server 192.168.92.26:6443 was refused - did you specify the right host or port?查到是kubelet进程没有启动 [rootk8s-master ~]# systemctl status kubelet ● kubelet.service - kubelet: The Kubernetes …...
国内好用的chatGPT和AI绘图工具
分享一个比较好用的AI 分享一个比较好用的AI,只是需要开通会员,目前官网的价格是:298,开通之后可以使用chatgpt4、AI绘画、图片融合等等!不开通的话是可以免费使用15次的,下面是一些介绍图片!链…...
蚂蚁庄园3.31今日答案春季美食“雷竹笋”之所以得名是因为出笋与打雷有关吗?
蚂蚁庄园是一款爱心公益游戏,用户可以通过喂养小鸡,产生鸡蛋,并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料,使用鸡饲料喂鸡之后,会可以获得鸡蛋,可以通过鸡蛋来进行爱心捐赠。其中&#…...
零基础入门转录组数据分析——绘制差异火山图
零基础入门转录组数据分析——绘制差异火山图 差异分析的火山图(Volcano Plot)在生物信息学数据分析中,特别是在基因表达差异分析中,是一个非常直观和有用的工具。 本教程将从导入的数据结构开始,一步步带大家在R中绘制好看的火山图,最后对火山图进行解读,确保读者理解…...
网站百度权重查询/谷歌广告联盟怎么做
题目 题目链接 题解 太水了啊。 就输入判断就行,不会STL的string就去学一学,不想学的就死一边子去。 当然也可以用strcmp,不过我都快忘了咋用了。 我也懒得写for了,就while输入了。 我的锅,原来是入门题ÿ…...
软件下载类型网站怎么做/武汉seo结算
后退文件夹: cd - 在重复一遍就是前进了 转载于:https://www.cnblogs.com/Baronboy/p/7787760.html...
网站设计与网页制作毕业论文/黄金网站app视频播放画质选择
现在数据库或是某个文件里有一些数据需要显示在界面上该怎么办呢?我们的目的就是将这些数据设法放到界面上去可以显示出来,这个将数据放到界面上去的过程可以叫住数据绑定。在Flex应用中程序中,数据绑定的实际是借助事件机制来完成的…...
区网站制作/云搜索神器
创建2维dataframe格式数据 import numpy as np import pandas as pddata [[1, 5, 1.2], [2, 6, 2.2], [3, 7, 3.2]] df pd.DataFrame(data data,index [row_%d%i for i in range(3)],columns[col_0, col_1, col_2],dtypefloat64)对所有数据函数处理 def pow(x):return x*…...
wordpress 微博侧边栏/正规电商培训学校排名
问: 我用的是vc2008 express版。 自己写了一个服务功能的lib,在一个客户程序中要调用我自己写的这个lib。无论lib还是客户端程序都是非mfc的,只用到了最基本的win32程序框架和opengl库。 在本机可以运行,使用MTD方式编译后ÿ…...
web网站双语切换怎么做/搜索引擎谷歌
0882reachableSubNodes 细分图中的可到达结点 1 题目 https://leetcode.cn/problems/reachable-nodes-in-subdivided-graph/ 2 解题思路 1 解题思路:类似的题目:https://leetcode.cn/problems/partition-array-into-two-arrays-to-minimize-sum-diff…...