- 浏览: 763588 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
这里面东西还挺多,先写点,以后慢慢补充吧
operator++(a); //++a
operator++(a,int);//a++,int是一个哑元常量值
Bird
重载new,delete,一般不推荐
operator++(a); //++a
operator++(a,int);//a++,int是一个哑元常量值
Bird
#include<iostream> using namespace std; class Bird{ public: string s; static int i; int num; public: Bird(string str); Bird(const Bird& bird); }; const Bird& operator+(Bird& bird1,const Bird& bird2){ bird1.num+=bird2.num; return bird1; } const Bird& operator-(Bird& bird1,const Bird& bird2){ bird1.num-=bird2.num; return bird1; } const Bird& operator*(Bird& bird1,const Bird& bird2){ bird1.num*=bird2.num; return bird1; } const Bird& operator/(Bird& bird1,const Bird& bird2){ bird1.num/=bird2.num; return bird1; } class BirdHouse{ public: int num; public: BirdHouse(Bird bird1,Bird *bird2,const Bird& bird3){cout << "constructor" << endl;} BirdHouse(const BirdHouse& birdHouse){cout << "bird house copy constructor!"<< endl;} const BirdHouse& operator=(const BirdHouse& bh){cout << "operator=" << endl;return bh;} const BirdHouse& operator+(const BirdHouse& bh){ num+=bh.num; return *this; } const BirdHouse& operator-(const BirdHouse& bh){ cout << "operator-" << endl; num-=bh.num; return *this; } const BirdHouse& operator*(const BirdHouse& bh){ num*=bh.num; return *this; } const BirdHouse& operator/(const BirdHouse& bh){ num/=bh.num; return *this; } }; int Bird::i = 0; Bird::Bird(string str):s(str) { } Bird::Bird(const Bird& bird) { cout << "bird copy constructor!" << endl; } ostream& operator<<(ostream& os,const Bird& bird) { os << bird.s << " #" << bird.i << endl; return os; } int main() { Bird bird("small"); bird.num = 10; cout << bird << endl; Bird bird2(bird); bird2.num = 5; cout << bird2 << endl; Bird bird3("big"); cout << "test bird house:" << endl; BirdHouse bh1(bird,&bird2,bird3); BirdHouse bh2(bh1); bh2 = bh1; cout << "test operator:" << endl; bird = bird-bird2; cout << bird.num << endl; bh1.num = 20; bh2.num = 30; bh1*bh2; cout << bh1.num << endl; cout << bh2.num << endl; }
重载new,delete,一般不推荐
#include<iostream> using namespace std; class A{ public: void* operator new(size_t){ //must:void*,size_t cout << "new operator!" << endl; } void* operator new(size_t,string s){//attention cout << "operator new!" << s << endl; } void operator delete(void* l){ cout << "delete operator!" << endl; } }; class B{ public: void* operator new[](size_t){ cout << "new arrar!" << endl; } void operator delete[](void *l){ cout << "delete array!" << endl; } }; int main() { string str = "abc"; A* a1 = new A; delete a1; A* a2 = new (str) A();//attention delete a2; B* b = new B[10]; delete []b;//[] must before b }
发表评论
-
柔性数组
2017-09-20 09:53 508#include <iostream> #i ... -
rawsocket发送icmp包
2017-09-06 09:54 661#include <stdio.h> #in ... -
查看glibc版本
2016-12-07 14:13 549strings /lib64/libc.so.6 |grep ... -
trim
2015-05-14 14:45 365/* trim from start */ ... -
log
2015-03-30 17:42 452log.h #ifndef __LOG_H__ #def ... -
输出类名
2014-02-20 21:51 588#include <iostream> us ... -
GC的改良
2013-10-17 22:05 577分代回收:对分配不久,诞生时间较短的“年龄”对象进行重点扫描, ... -
GC与引用记数
2013-10-16 21:57 696根(Root)就是判断对象是否可被引用的起始点。至于哪里才是根 ... -
pthread
2013-07-09 10:10 590#include <pthread.h> # ... -
const
2012-10-08 23:57 1158#include<iostream> usi ... -
声明与定义
2012-10-04 11:33 695extern int i;//声明但未定义 int j;//声 ... -
windows下iconv转码
2012-08-28 17:07 2853http://ah-fu.iteye.com/blog/281 ... -
在windows下使用pthread
2012-08-28 10:12 927http://hi.baidu.com/yylwuwei/bl ... -
消除编译器未使用的警告
2012-03-29 15:07 1115#define XXX_UNUSED(x) (void)x; ... -
消息队列
2012-03-27 16:56 1415msgget函数用于创建一个新的消息队列或访问一个已存在的消息 ... -
静态链接库
2012-03-16 16:54 714静态库是obj文件的一个集合,通常以.a为后缀,理论上执行速度 ... -
#if0
2012-03-07 13:45 1266#if 0 #endif 用于屏蔽注释中间的代码,避免注释嵌 ... -
枚举转char
2012-03-05 11:54 1021#define NAME(value) #value -
libevent相关
2012-02-03 11:04 1696void event_set(struct event *ev ... -
c++0x
2012-02-01 09:55 779http://blog.csdn.net/pongba/art ...
相关推荐
C++单目运算符重载 单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和–i等。重载单目运算符的方法与重载双目运算符的方法是类似的。但由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数...
"实验7 多态性和运算符重载" 多态性是指类族中具有相似功能的不同函数使用同一名称来实现,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。C++中的多态的实现形式包括函数重载、运算符重载、虚函数...
运算符重载实例 在 C++ programming 语言中,运算符重载是指在类中重新定义运算符的行为,以便在类的对象之间进行运算。今天,我们将通过一个实例来了解如何在 C++ 中实现运算符重载。 在这个实例中,我们定义了一...
### C++程序设计 运算符重载实验(一) #### 概述 在C++程序设计中,运算符重载是一项重要的特性,它允许程序员重新定义预定义运算符的行为,以便于创建更加自然和直观的接口。本实验旨在帮助学习者掌握如何在...
在C++编程语言中,运算符重载是赋予运算符新的功能或意义,使其能用于特定自定义数据类型的一种技术。本主题将深入探讨如何通过重载加减法运算符来实现复数类的成员函数。复数类是用于表示复数(包括实部和虚部)的...
在C++编程语言中,运算符重载是一项关键特性,允许我们为自定义类型赋予特定的运算符行为。本实验“C++作业实验-运算符重载”旨在深入理解这一概念,通过Visual Studio 2010开发环境进行实践。在这个实验中,我们将...
本项目通过使用运算符重载技术实现了矩阵的基本运算,包括加法、减法、乘法等。下面将详细解释这个主题中的关键知识点。 首先,我们要理解C++中的运算符重载。运算符重载允许我们在不同的上下文中为同一个运算符...
运算符重载是C++语言中的一项重要特性,它允许开发者为用户自定义的数据类型(如类)赋予标准运算符新的含义,使得这些运算符在处理这些特定类型时能够执行相应的操作。运算符重载的核心在于,通过创建与运算符关联...
在C++编程语言中,运算符重载是一种特殊的功能,允许程序员为已有的运算符赋予新的含义,以便在自定义类型上使用。这使得我们能够用熟悉的运算符符号来执行特定于类型的操作,增强了代码的可读性和简洁性。本文将...
实验二 运算符重载的应用.doc 本实验报告的主要内容是对运算符重载的应用,通过构造函数、引用、运算符重载的概念和使用方法的学习和掌握,为后续的面向对象程序设计打下基础。 一、实验目的 1. 进一步熟悉构造...
运算符重载是C++语言中的一个重要特性,它允许我们为已有的运算符赋予新的含义,以便在自定义数据类型上使用。对于新手来说,理解并掌握运算符重载是进阶C++编程的关键步骤之一。这篇教程将深入探讨运算符重载的基本...
在C++编程语言中,运算符重载是允许我们为已存在的运算符赋予新的含义或功能的一种机制。这个实例将探讨如何通过成员函数和非成员函数两种方式来重载运算符,以及如何结合友元函数来实现特定的操作。首先,让我们...
详细介绍 C++运算符重载 的PPT 文中部分内容: 下标运算符“[ ]”重载 C++把下标运算符[ ]看成一个双目运算符,其操作数为<基本表达式>和<表达式>,对应的运算符为operator[ ],必须重载为一个成员函数。对于下标...
C++中的运算符重载是面向对象编程的一个重要特性,它允许程序员自定义某些运算符在类的对象上的操作方式。这意味着可以为新定义的数据类型赋予传统运算符的新含义,或者修改已存在数据类型的运算符含义。在本课程件...
在C++编程语言中,运算符重载是一个关键特性,它允许我们为已存在的运算符赋予新的含义,以便在自定义类型上使用。这使得我们可以按照与内置类型类似的方式操作自定义类对象,提高代码的可读性和简洁性。本课件主要...
在C++编程语言中,复数类的实现是面向对象编程的一个重要概念,它允许我们创建自定义数据类型来表示复数,并通过运算符重载为这些类型提供友好的操作接口。运算符重载是C++的一个强大特性,使得我们可以为自定义类型...
在C++编程中,运算符重载和继承是两个核心概念,它们极大地扩展了语言的能力,使得代码更加灵活且易于理解。本章我们将深入探讨这两个主题,并通过实际代码示例来阐述它们的工作原理。 首先,让我们关注“运算符...
### 运算符重载和函数重载 #### 概述 在面向对象编程中,重载是一种重要的机制,它允许我们为同一个名称定义多个不同的实现。这不仅可以提高代码的可读性和简洁性,还可以更好地封装行为。在C++中,重载主要分为两...
在C#编程语言中,运算符重载是一种特殊的技术,允许程序员为自定义类型赋予标准运算符的新含义。当我们创建一个表示复数的类时,为了使得复数的加法、减法、乘法和除法等操作直观易用,就需要重载相应的运算符。复数...
### 实验六:函数重载与运算符重载 #### 实验目的 1. **掌握函数重载的方法**:理解并能够实现同一名称但参数不同的多个函数,以便根据不同的参数类型或数量调用相应的函数体。 2. **掌握运算符重载的方法**:学会...