首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

奇怪的重载=某本书上的运算符,c风格?

这个问题涉及到运算符重载和C风格的相关概念。

运算符重载是指在编程语言中,允许用户重新定义已有的运算符的行为。通过重载运算符,可以使得运算符对自定义的数据类型也能够进行操作,从而增加了语言的灵活性和可扩展性。

C风格是指使用C语言的编码风格和习惯。C语言是一种通用的编程语言,广泛应用于系统开发和嵌入式领域。

对于奇怪的重载=某本书上的运算符,c风格,可以理解为在某本书中介绍了一种奇特的运算符重载方式,该方式符合C语言的编码风格。

由于没有具体提及书名或具体的运算符,无法给出具体的答案。但是可以根据一般的运算符重载方式和C语言的特点进行推测。

在C语言中,运算符重载是不支持的,因此奇怪的重载=某本书上的运算符,c风格可能是在该书中提到了一种特殊的技巧或者约定,通过某种方式模拟了运算符重载的效果。

需要注意的是,C语言本身并不支持面向对象的特性,因此无法像C++或其他支持运算符重载的语言那样直接重载运算符。但是可以通过函数或宏的方式来实现类似的效果。

总结起来,奇怪的重载=某本书上的运算符,c风格可能是指在某本书中介绍了一种特殊的技巧或约定,通过某种方式模拟了运算符重载的效果,符合C语言的编码风格。但由于缺乏具体信息,无法给出更详细的答案。

请注意,以上回答仅为推测,具体情况还需根据具体的书籍内容来确定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++运算符重载形式

一、重载为类成员函数 重载单目运算符“++”,如果重载是前置运算符“++”,则++a1调用相当于调用函数a1.operator++()。...如果重载是后置运算符“++”,则运算符重载函数需要带一个整型参数,即“operator++(int)”,参数int仅仅表示后置运算,用于和前置运算区分,并无其他意义。...为了加深读者理解,下面通过案例演示前置运算符“++”与后置运算符“++”重载,如例所示。...二、重载为类友元函数 重载为类友元函数时,由于没有隐含this指针,因此操作数个数没有变化,所有的操作数都必须通过函数参数进行传递,函数参数与操作数自左至右保持一致。...下面通过案例演示将运算符“+”和“?”重载为类友元函数,如例所示。

71950

C++】C++运算符重载规则

本篇博客讲解: 运算符重载规则,以及实例 运算符重载规则 被重载运算符必须是已经存在C++运算符,不能重载自己创建运算符运算符重载之后,原有功能仍然保留。...重载不能改变运算符运算对象个数。 +运算符具有两个操作数,在+运算符函数作为类(例如上个例子中CTime)成员函数时候,有一个参数是隐含,也就是当前对象,使用this指针来引用。...->(成员访问运算符) 、[] (下标运算符)、.new/delete、>>、<< 不能重载运算符: ?...一般将单目运算符重载为成员函数,将双目运算符重载为友元函数 成员函数方式要求左侧参数要与类类型相同。而普通函数则要求实参顺序与形参类型顺序一致。...如 有的运算符必须定义为类成员函数 =、赋值运算符 []、下标运算符 () 函数调用运算符 有的运算符不能定义为类成员函数,只能定义为类友元 > 运算符重载可以在函数内执行任意操作

56430

C++】运算符重载 ⑥ ( 一元运算符重载 | 后置运算符重载 | 前置运算符重载 与 后置运算符重载 区别 | 后置运算符重载添加 int 占位参数 )

上 篇博客 【C++】运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 ) 【C++】运算符重载 ⑤ (...一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 ) 讲解了 前置运算符 重载 , 前置运算符就是 ++Object 或...--Object , 一元运算符 在 对象 前面 ; 本篇博客开始讲解 后置运算符 重载 ; 一、后置运算符重载 1、前置运算符重载 与 后置运算符重载 区别 后置运算符 是 Object++ 或...Object-- , 一元运算符在对象后面 ; 前置运算符重载 与 后置运算符重载 区别是 返回值类型 不同 , 前置运算符重载 , 返回值是 对象引用 ; // 使用 全局函数 实现 前置 ++...++(Student& s) 这2个函数被看做相同函数 , 上述重载函数定义 , 在编译时报错 , error C2556: “Student operator ++(Student &)”:

12130

C++】运算符重载 ⑥ ( 一元运算符重载 | 后置运算符重载 | 前置运算符重载 与 后置运算符重载 区别 | 后置运算符重载添加 int 占位参数 )

上 篇博客 【C++】运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 ) 【C++】运算符重载 ⑤ (...一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 ) 讲解了 前置运算符 重载 , 前置运算符就是 ++Object 或...--Object , 一元运算符 在 对象 前面 ; 本篇博客开始讲解 后置运算符 重载 ; 一、后置运算符重载 1、前置运算符重载 与 后置运算符重载 区别 后置运算符 是 Object++ 或...Object-- , 一元运算符在对象后面 ; 前置运算符重载 与 后置运算符重载 区别是 返回值类型 不同 , 前置运算符重载 , 返回值是 对象引用 ; // 使用 全局函数 实现 前置 ++...++(Student& s) 这2个函数被看做相同函数 , 上述重载函数定义 , 在编译时报错 , error C2556: “Student operator ++(Student &)”:

12910

C++ 运算符重载基本概念

— 1 — 运算符重载需求 C++ 预定义运算符,只能用于基本数据类型运算:整型、实型、字符型、逻辑型等等,且不能用于对象运算。...但是我们有时候又很需要在对象之间能用运算符,那么这时我们就要重载运算符,使得运算符能用于对象之间运算。...— 2 — 运算符重载形式 运算符重载实质就是函数重载,可以重载为普通函数,也可以重载为成员函数。...如:c = a + b; 等价于c = operator+(a,b) 在上面的代码中,我把重载+号运算符普通函数,在Complex复数类中定义成了友元函数,目的是为了友元函数能访问对象私有成员,否则会编译报错...为什么重载-号和+号运算符函数参数表是const Complex & c常引用类型而不是Complex c呢?

1K40

C++】运算符重载 ② ( 类内部定义云算符重载 - 成员函数 | 类外部定义运算符重载 - 全局函数 | 可重载运算符 )

一、运算符重载本质 运算符重载本质是 " 函数调用 " ; 当使用 + 将 个对象相加时 , C++ 编译器会查找是否有定义运算符重载函数 ; // 自定义类型相加 Student s1(10,...个对象执行加法操作 , 如果没有找到 运算符重载 函数 , 就会报错 ; 报错信息如下 : error C2676: 二进制“+”:“Student”不定义该运算符或到预定义运算符可接收类型转换 1...二、运算符重载语法 - 类内部定义云算符重载 ( 成员函数 ) 1、运算符重载函数语法说明 C++ 中允许重新定义运算符行为 , 如常用加减成熟运算符 , 都可以进行重载操作 ; 可以自定义运算符操作...o3; } 2、运算符重载函数调用 已重载运算符调用 , 可以直接调用运算符重载 operator*() 方法 , 也可以直接使用运算符 , o1 * o2 ; //运算符重载 //注意这里...: " << o6.number << endl; 代码执行结果 外部定义运算符重载完整写法结果 : 800 外部定义运算符重载简化写法结果 : 800 四、可重载运算符 ---- 这里列举一下可重载运算符

22510

(转载非原创)C++中运算符重载

/zhaozhibo/p/14973736.html 运算符重载相当于运算符函数重载,用于对已有的运算符进行重新定义,赋予其另一种功能,以适应不同数据类型。...我们之前提到过C++中函数重载,可以根据形参不同调用不同函数,那么运算符重载跟函数重载实现形式差不多,运算符重载一般写法为返回值 operator运算符(参数列表)。...下面就根据几个简要例子来简单实现一下加法,左移以及自增运算符重载,还有赋值,关系运算符等可以自己实现。...,可以实现 a+b+c 类型操作,这种情况下先执行 a+b ,返回值再与 c 相加。...,重载前置自增运算符能够实现期望功能。

74920

C++运算符重载一些规则

重载运算符并不能改变他们优先级。但是我们可以通过使用括号来强制运算按照我们希望优先级进行。...重载运算符并不能改变运算符关联性(左关联或者右关联) 重载运算符并不能改变运算符操作数,也就是说,二元运算符与一元运算符不能相互转化 我们无法创建新运算符 内置基本类型操作符无法被重载。...(比如说,你不能通过重载int运算符,把+变成-功能) 相关运算符,比如+和+=,需要分别重载重载(), [], ->等分配运算符时,重载函数必须是类成员函数。...对于其他可以重载运算符重载函数可以是类成员函数,也可以不是类成员函数。

33520

C++ 日期类Date实现(运算符重载

参考链接: 递增++和递减-C++编程中运算符重载 C++ 日期类Date实现(运算符重载)   该类综合考察了关于类基本操作,包括构造,拷贝构造,析构,运算符重载等方面的知识。 ...Date类内容和实现   1. 该日期类主要实现日期时间加减递增递减等基本运算 2. 主要通过运算符重载来实现日期各种运算 3....重载运算符之间会反复调用,测试阶段数据逐一进行测试,易于排错  Date.cpp  #pragma once #include using namespace std; class..._day;     }     // 赋值运算符重载   // d2 = d3 -> d2.operator=(&d2, d3)     Date& operator=(const Date& d...=运算符重载     bool operator != (const Date &d)     {         return !

1.2K10

CAOV - C++不规范运算符重载利用

漏洞点: 虽然给了源码但是漏洞得看二进制文件才能看出,结合flag,这是C++运算符重载相关漏洞 edit时候存在栈复用,可以任意指针free 漏洞原理: 正常运算符重载写法(这里只讨论写为成员函数...)需要在成员函数末尾return *this,同时返回值需要为当前对象类型引用类型,这个返回值会作为其他运算右值,如a = b = c,为了保证程序正常,这个值必须要存在。...如果不主动写return *this,g++在编译时候,会把返回值指针指向栈上一段同类型大小空内存(填充为null),把这段空内存作为右值(隐式return)然后析构这段内存。...但是空内存可以借助栈复用进行修改,构造出我们自定义指针,这样在析构函数中如果有对某些指针域delete,就可以构造出任意地址free 利用思路: 难点在第一步leak heap。...通过在bss上构造fakechunk和自定义指针free出bss上chunk,然后借助一个非法size值跳过最后析构避免doublefree,这样可以在不触发0截断时输出free过chunk上fd

53420

C++基础——C++面向对象之重载与多态基础总结(函数重载运算符重载、多态使用)

0 引言         上一次博文讲解了C++类和对象,以及继承特征,本次博文总结下C++面向对象另外两个关键特征——重载与多态。...1 重载         C++ 允许在同一作用域中某个函数和运算符指定多个定义,分别称为函数重载运算符重载。...当调用一个重载函数或重载运算符时,编译器通过把所使用参数类型与定义中参数类型对比,决定选用最合适定义。选择最合适重载函数或重载运算符过程,称为重载决策。...Qt源码中运用了大量函数重载,不仅在 C++中,在其他语言如Java等也有, 因为需要不同,所以有重载各种各样函数。 下面做个示例程序,说明函数重载使用方法。         ...要重载运算符,需要使用被称为运算符函数特殊函数形式, 重载运算符格式如下: operator () { } 可重载运算符列表: 不可重载运算符列表

63110

C++ 赋值运算符=重载(浅拷贝、深拷贝)

比如:把一个 int 类型变量赋值给一个 Complex(复数)对象,或把一个 char* 类型字符串赋值给一个字符串对象,此时就需要重载 = 赋值运算符 。...需要注意是:赋值运算符 = 只能重载为成员函数。 ---- — 2 — 举个栗子 下面我们以自定义一个自己字符串类代码例子,讲解赋值运算符重载函数。...MyString 字符串类所需成员函数: 构造函数 / 析构函数 返回 char* 指针函数 赋值运算符重载函数 ?...当我们重载一个运算符时候,好风格应该是尽量保留运算符原本特性。 考虑: a = b = c; 这个赋值语句顺序是先 b = c ,然后在 a = (b = c) 。...赋值运算符重载函数(深拷贝) 复制构造函数(深拷贝) ?

2.1K41

C++】运算符重载 ⑨ ( 等号 = 运算符重载 | 调用默认浅拷贝构造函数情况分析 | 等号 = 运算符重载 与 拷贝构造函数 各自使用场景 | 等号 = 操作符重载步骤 )

, 并支持链式操作 ; 一、等号 = 运算符重载 ---- 1、调用默认浅拷贝构造函数情况分析 C++ 编译器 为 类 提供 默认 拷贝操作 , 是对 成员变量 简单拷贝 , 是 浅拷贝 ;...拷贝构造函数 各自使用场景 等号 = 运算符重载 与 拷贝构造函数 各自使用场景 : 拷贝构造函数 : 如果 使用对象 为一个 新对象 进行初始化 , 调用是拷贝构造函数 ; 等号 = 运算符重载 :...如果 使用对象 为一个已存在对象 重新进行赋值 , 调用是 等号运算符 重载运算符方法 ; 3、= 操作符重载步骤 使用 成员函数 实现 等号 = 运算符重载 : 首先 , 写出函数名 , Student...s2 = s; 等号 = 运算符重载 , 函数名规则为 " operate " 后面跟上要重载运算符 , 函数名是 operate= ; operate= 然后 , 根据操作数 写出函数参数 , 参数一般都是...重载 等号 = 运算符" << endl; // 释放旧内存, 销毁 name 指向堆内存空间 if (this->m_name !

23020

C++干货基地】特殊函数名函数:赋值运算符重载

一、运算符重载 C++ 中为了增加代码可读性运算符重载是具有特殊函数名函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通函数类似。...函数名字为:关键字operator后面接需要重载运算符符号。...** 1.1 == 运算符重载 下面我们就来实践一下再日期类中 == 运算符如何重载, 以往我们在 内置类型 == 运算符返回都是bool 类型 这样的话返回类型就确定了 运算符重载 关键字是 operator...2.2 赋值运算符重载行为 赋值运算符重载既然也是六大默认成员函数之一那么肯定也是我们不写自动生成一个默认复制运算符重载 ,那么究竟有什么行为呢?...++形成能正确重载 C++规定:后置++重载时多增加一个int类型参数,但调用函数时该参数不用传递,编译器自动传递 Date operator++(int) { Date tmp(*this)

5400

C++ 自增、自减运算符重载和性能分析

为了区分所重载是「前置」运算符还是「后置」运算符C++规定: 「前置」运算符作为一元运算符重载重载为成员函数形式如下: // 前置自增运算符重载函数,函数参数是空 T & operator+...+(); // 前置自减运算符重载函数,函数参数是空 T & operator--(); 「后置」运算符作为二元运算符重载,多写一个没用参数,重载为成员函数形式如下: // 后置自增运算符重载函数...」运算符重载函数如下: 前置运算符重载成员函数 后置运算符重载成员函数 T & operator++(); T operator++(int); T & operator--(); T operator...那么问题来了: 为什么「前置」运算符返回是引用 & ? 为什么「后置」运算符返回是普通对象(临时对象)? 主要是因为为了保持原本 C++ 前置和后置运算符特性。...而「前置」运算符重载函数执行步骤: 成员变量自增或自减; 返回对象引用; 可见,「前置」运算符重载函数是比「后置」运算符重载函数性能是更高,开销相对比较少。

1K20

《挑战30天C++入门极限》对C++递增(增量)运算符重载思考

C++递增(增量)运算符重载思考   在前面的章节中我们已经接触过递增运算符重载,那时候我们并没有区分前递增与后递增差别,在通常情况下我们是分别不出++a与a++差别的,但的确他们直接是存在明显差别的...原因主要是由C++对递增(增量)运算符定义引发。 他们之间差别主要为以下两点:   1、运算过程中,先将对象进行递增修改,而后返回该对象(其实就是对象引用)叫前递增(增量)运算。...在运算符重载函数中采用值返回方式编写(这也正是前面(a++)++出错误原因,(a++)返回不是引用,不能当作左值继续参加扩号外部++运算),重载函数内部实现必须创建一个用于临时存储原有对象值对象...那么在编写运算符重载函数时候我们该如何区分前递增运算符重载函数与后递增运算符重载函数呢?   ...system("pause"); }   通过对前后递增运算分析,我们可以进一步可以了解到,对于相同情况单目运算符重载我们都必须做好这些区别工作,保证重载运算符符合要求。

50520
领券