C++ 默认成员函数、运算符重载 code
来源:互联网 发布:mysql存储特殊字符 编辑:程序博客网 时间:2024/05/24 04:48
holy now
#include <cstdio>#include <cstdlib>#include <iostream>using namespace std;class deffunc{private:struct item1{int a;};struct item2 {struct item1 a;};public:/*typedef int * pintmy;const pintmy ci; // equal int *const ci;const int * cj; */deffunc():b(2) {a = 1; e = (struct item2 *)malloc(sizeof(struct item2)); e->a.a = 5;};~deffunc();deffunc(const deffunc &obj);deffunc &operator =(const deffunc &obj);deffunc *operator &();const deffunc *operator &() const;/*it is a mistake like this:deffunc *operator &() const;*//* operator new reload */void *operator new(size_t size, void *addr);void *operator new(size_t size, char *msg);void *operator new[](size_t size, char *msg);/* operator ++ reload */deffunc &operator ++() {a++; return *this;} // ++deffuncobjdeffunc operator ++(int){deffunc tmp(*this); ++(*this); return tmp;} //deffuncobj--struct item1 &operator *() const {return e->a;}/* then written like this: int &operator *() const {return test.a;} is a big mistake:"const int can not be converted to int &" */struct item1 *operator ->() const {return &(e->a);}bool operator ==(const deffunc &obj) const {return a == obj.a;}deffunc& operator +=(const deffunc &obj){a += obj.a;return *this;}deffunc operator +(const deffunc &obj){deffunc tmp = *this;return tmp += obj;}bool operator ()(const deffunc &obj) {return a > obj.a;}void setmember(int val) {a = val;}void print() {printf("a=%d, b=%d, c=%d, d=%d\n", a, b, c ,d);}private:int a;const int b;static int c;static const int d = 4;struct item2 *e;struct item2 test;};int deffunc::c = 3;deffunc::~deffunc() {}deffunc::deffunc(const deffunc &obj): b(obj.b){a = obj.a;e = (struct item2 *)malloc(sizeof(struct item2));e->a.a = obj.e->a.a;}deffunc &deffunc::operator =(const deffunc &obj){this->a = obj.a;return *this;}deffunc *deffunc::operator &(){return this;}const deffunc *deffunc::operator &() const{return this;}void *deffunc::operator new(size_t size, void *addr){return addr;}void *deffunc::operator new(size_t size, char *msg){printf("%s\n", msg);return ::operator new(size);}void *deffunc::operator new[](size_t size, char *msg){printf("%s\n", msg);return ::operator new(size);}int main(){deffunc obj;obj.setmember(100);obj.print();deffunc obj1;obj1 = obj;obj1.print();printf("-1-------------1-\n\n");void *addr = malloc(sizeof(deffunc));deffunc *pobj = new(addr) deffunc;printf("pobj: %x, addr: %x\n", pobj, addr);pobj->print();free(addr);printf("-2-------------2-\n\n");deffunc *pobj1 = new("reload operator new") deffunc;pobj1->print();deffunc *pobj2 = new("reload operator new []") deffunc[20];pobj2[19].print();printf("-3-------------3-\n\n");obj.print();deffunc obj2 = ++obj;obj2.print();deffunc obj3 = obj2++;obj3.print();printf("obj3: %d\n", (*obj3).a);printf("obj3: %d\n", obj3->a);printf("-4-------------4-\n\n");obj2.print();obj3.print();printf("operator (): %d\n", obj2(obj3));printf("all will be OK\n");}
- C++ 默认成员函数、运算符重载 code
- 默认成员函数+运算符重载
- 【c++】类和对象--四个默认成员函数+运算符重载
- 【C++】类和对象--基础知识+四个默认成员函数+运算符重载
- 类和对象(四个默认成员函数+运算符重载)
- 类中的四个默认成员函数+运算符重载
- 类和对象->四个默认成员函数->运算符重载
- C++四个默认成员函数+运算符重载
- C++四个默认成员函数&运算符重载
- 四个默认成员函数和运算符重载
- 四个默认成员函数和重载运算符
- 运算符重载 成员函数
- 运算符重载(重载为成员函数)
- 【C++】成员函数重载二元和一元运算符
- 类和对象1--四个默认成员函数+运算符重载
- 类和对象——四个默认成员函数+运算符重载
- C++类和对象、四个默认成员函数、运算符重载
- Cpp类和对象之四个默认成员函数和运算符重载
- .html与.aspx的区别
- 长寿的树
- bcdedit添加win7启动项
- android FragMent 错误汇总 (持续更新)
- Geek之旅----实现支付宝钱包中全自动刮奖
- C++ 默认成员函数、运算符重载 code
- 从开发者的协作,到分享的价值
- linux 忘记root密码怎么办
- 更改SSHSecureShellClient界面大小
- TextField 与FTE的使用情景
- EAX、ECX、EDX、EBX寄存器的作用
- 加快mysql数据导出导入速度
- How To: Run Tapestry5 On JBoss 6/7
- arcgis之shapefile转grid