该函数的名字是 operator@,其中@代表了被重载的运算符。
运算符重载与友元函数 友元函数是一个全局函数,和我们上例写的全局函数类似,只是友元函数可以访问 某个类私有数据。 案例 : 重载左移 *** 作符 (<<), 使得 cout 可以输出对象。 可重载的运算符 自增自减(++/--)运算符重载 当编译器看到 ++a(前置 ++) ,它就调用 operator++(a), 当编译器看到 a++ (后置 ++ ),它就会去调 用 operator++(a,int) 其标准形式为 :#include
using namespace std;
class Data
{
friend ostream& operator<<(ostream &out, Data &ob);
private:
int a;
int b;
public:
Data()
{
cout<<"无参的构造函数"<a = a;
//this->b = b;
}
void showData(void)
{
cout<<"a = "a +1
b++;//this->b = this->b +1
//后使用
return *this;
}
//成员函数 重载后置++ ob1++ (先使用 后加)
//编译器 默认识别 operator++(a,int) //但是a可以用this代替 从而化简 operator++(int)
Data& operator++(int)//ob1++
{
//先使用(备份加之前的值)
static Data old=*this;//指针解引用后,是这个对象
//后加
a++;
b++;
//返回备份值
return old;
}
//重载前置-- --ob3
//编译器 默认识别 operator++(a) //但是a可以用this代替 从而化简 operator--()
Data& operator--()
{
//先减
a--;
b--;
//后使用(返回)
return *this;
}
//重载后-- ob4--
//编译器 默认识别 operator++(a,int) //但是a可以用this代替 从而化简 operator++(int)
Data& operator--(int)
{
//先使用
static Data old=*this;//注意这里的static,必须要加,否则函数调用结束,就会释放,导致程序错误。
//再减
a--;
b--;
return old;
}
};
//普通全局函数 作为类的友元 重载<<运算符
ostream& operator<<(ostream &out, Data &ob)
{
out<<"a = "<
指针运算符(*、->)重载
设计一个智能指针解决new出来的堆区空间释放问题(局部空间结束后,借助析构函数释放空间)
#include
using namespace std;
class Person
{
private:
int num;
public:
Person(int num):num(num)
{
//this->num = num;
cout<<"有参构造num = "<
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)