友元与运算符重载
来源:互联网 发布:php小炒花生米 编辑:程序博客网 时间:2024/05/16 06:25
友元
对于类的私有方法,只有该类中可以访问,其他类中不能访问。C++语言提供了友元类和友元方法来实现访问其他类的私有成员,当用户希望访问当前类的私有成员时,可以在当前类中将另一个作为自己的有元类,这样另一类中就可以访问当前类的私有成员。
class Cltem{private:char name[128];void OutputName(){printf("%s\n",name);}}public:friend class Clist;void SetName(const char * pdata){}};class Clist{private:Cltem m_ltem;public:void OutPut();};void clist::OutPut(){m_ltem.OutputName();}
在定义CItem类时,使用friend关键字将Clist类定义为CItem类的友元方法,这样Clist的所有方法都可以访问CItem类的私有成员m_ltem.OutputName();
友元方法,在定义类时,可以将类的某个方法定义为友元方法,这样就限制只有该方法才可以访问这个类的私有成员。
运算符重载
#include<iostream>#include<string.h>using namespace std;class Point{private: int x; int y;public: Point(){ cout<<"Point()"<<endl; } Point(int x,int y):x(x),y(y){ cout<<"Point(int x,int y):x(x),y(y)"<<endl; } Point(const Point &p) { cout<<" Point(const Point &p)"<<endl; x=p.x; y=p.y; } ~Point() { cout<<" ~Point()"<<endl; } int getX(){return x;} int getY(){return y;} void setX(int x){this->x=x;} void setY(int y){this->y=y;} void printInfo() { cout<<"("<<x<<","<<y<<")"<<endl; } friend Point operator+(Point &p1,Point &p2); friend Point add(Point &p1,Point &p2); friend Point& operator++(Point &p); friend Point operator++(Point &p,int a);};Point add(Point &p1,Point &p2){ Point n; n.setX(p1.getX()+p2.getX()); n.setY(p1.getY()+p2.getY()); return n;}Point operator+(Point &p1,Point &p2){ cout<<"operator+"<<endl; Point n; n.setX(p1.getX()+p2.getX()); n.setY(p1.getY()+p2.getY()); return n;}/*Point p(1,2);++p*/Point& operator++(Point &p){ cout<<"++P"<<endl; p.x+=1; p.y+=1; return p;}/*point p(1,2); p++*/Point operator++(Point &p,int a){ cout<<"p++"<<endl; Point n; n=p; p.x+=1; p.y+=1; return n;}int main(){ Point p1(1,2); Point m,n; cout<<"begin"<<endl; m=++p1; m.printInfo(); cout<<"------------"<<endl; p1.printInfo(); n=p1++; n.printInfo(); p1.printInfo(); cout<<"end"<<endl; return 0;}
const成员变量只能调用const成员函数。const成员函数即在函数末尾加上const,或者构造函数的参数声明为const。
0 0
- 运算符重载与友元函数
- 运算符重载与友元
- 友元与运算符重载
- 重载运算符与友元函数
- 运算符重载--友元
- 友元运算符重载
- C++运算符重载 成员函数与友元函数
- 浅谈运算符重载与友元函数
- 友元函数与运算符重载的结合
- c++ 运算符重载 友元函数
- 利用友元函数,重载运算符
- 友元函数重载运算符
- 运算符重载为友元函数
- 重载运算符以及友元函数
- 7.10友元函数重载运算符
- 运算符重载和友元函数
- C++运算符重载以及友元
- 友元函数编写运算符重载
- 啤酒和饮料
- apt-get install无法安装任意包问题
- 在cell中实现跳转
- 特征选择与特征学习
- Masonry的简单使用和xib中如何使用AutoLayout
- 友元与运算符重载
- 第七周:(LeetCode 300) Longest Increasing Subsequence(c++)
- 玩转ubuntu 之 问题与技巧
- Handler消息机制源码总结(雷惊风)
- 对表格和表单的介绍,标签嵌套原则。
- QT类学习系列(4)- 01-QUdpSocket
- ADV-78-算法提高-最长单词
- 动态规划2
- Tarjan