笔记3——C++类的一些特性
来源:互联网 发布:上海程序员招聘 编辑:程序博客网 时间:2024/06/05 11:25
/*** 主要对类中复制构造函数、操作符重载,内联函数,友元函数进行使用* * 复制构造函数与无参构造函数一样都有系统默认的,但对含动态内存变量需要注意,我们最好自己定义复制构造函数* 复制构造函数主要用于三种情况:参数传递、函数返回、赋值(Person p = x; Person p(x)) 操作符的重载不一定都是类的成员函数,主要取决于和类的关系,若是成员函数二元运算符参数类型是0个或1个参数,非成员函数对二元运算符可以使用两个参数。 inline标注表示此函数是内联函数,若某个函数需要被多次调用,则可以申明为内联函数。 内联函数是程序在编译的时候,直接将源代码复制过来加快程序的执行,但内联函数要求函数里面的代码尽量小,尤其忌讳循环。 friend标注表示此函数是友元函数,友元函数不是成员函数,它与普通函数类似,不能直接访问类的成员变量,但可以访问对象变量,并且可以访问对象中的私有变量,记住友元函数不能被继承。 this是程序中默认的指向类对象的常量指针 ,这里是指Person* const this; * **/class Person{ public: int a; int b; public: Person(); Person(int, int); //复制构造函数 Person(const Person&); //操作符重载的友元函数 friend Person operator+(Person&, Person&); friend Person operator-(Person&, Person&); //操作符重载的成员内联函数 inline Person operator*(Person&); inline Person operator/(Person&); inline bool operator==(Person&); ~Person();};/***无参构造函数 */Person::Person(){} /***有参构造函数 */Person::Person(int a, int b){ this->a = a; this->b = b;}/***复制构造函数 */Person::Person(const Person& p){ this->a = p.a; this->b = p.b;}/***操作符重载==*/inline bool Person::operator==(Person& p1){ if(this->a == p1.a && this->b == p1.b){ return true; } return false;}/***操作符重载+*/Person operator+(Person& p1, Person& p2){ Person p; p.a = p1.a+p2.a; p.b = p1.b+p2.b; return p;}/***操作符重载-*/Person operator-(Person& p1, Person& p2){ Person p; p.a = p1.a-p2.a; p.b = p1.b-p2.b; return p;}/***操作符重载**/Person Person::operator*(Person& p){ this->a *= p.a; this->b *= p.b; return *this;}/***操作符重载/*/Person Person::operator/(Person& p){ this->a /= p.a; this->b /= p.b; return *this;}/***析构函数*/Person::~Person(){}
0 0
- 笔记3——C++类的一些特性
- 【C#】常用的一些特性
- objective-c学习笔记第八章《objective-c 一些特性》
- C语言一些特性的分析
- C语言 const指针的一些特性
- html5的一些新特性笔记详解
- object-c笔记(一):一些特性【not finish】
- C语言的一些笔记
- C保留的一些笔记
- iOS杂谈3—ios6 Objective-C的新特性
- C#——特性
- objective -c 特性笔记
- Java的一些高级特性(四)——集合
- C语言中一些不被熟知的特性
- C语言中一些不被熟知的特性
- C语言一些以前不知道的特性
- php学习笔记(四十一)smarty3的一些新特性
- 学习笔记 - String的构造及一些特性
- Java中Filter、Listener,拦截器的学习,listener、 filter、servlet 加载顺序及其详解
- LeetCode Triangle
- 【嵌入式学习日记】2016年8月17日
- Android开源项目收集
- ClassLoader工作机制
- 笔记3——C++类的一些特性
- 剑指Offer——算法复杂度中的O(logN)底数是多少
- android 艺术开发探索之动画(animation)
- tjut 3074
- tomcat中server.xml配置详解
- linux安装redis
- BoxCars: 3D Boxes as CNN Input for Improved Fine-Grained Vehicle Recognition
- jQuery和Prototype的兼容性和冲突的解决方法
- Spring源代码解析(十):Spring Acegi框架授权的实现