📄 unary.cpp
字号:
#include "iostream.h" //关键字friend不在名字空间std中
class Integer {
private:
long i;
Integer* This() //私有的成员函数
{
return this;
}
public:
Integer(long ll = 0) : i(ll)
{}
// No side effects takes const& argument:
friend const Integer& operator+(const Integer& a); //单目加,为什么返回const Integer&,+a还是自己a,但+a只能出现在=右边
friend const Integer operator-(const Integer& a) ; //单目负
// friend Integer operator-(const Integer& a);
//-a = b; 编译通过,但运行结果不对!!函数返回的是一个匿名对象,
// friend const Integer operator-(const Integer& a) const;错!!const只能用于成员函数
friend const Integer operator~(const Integer& a); //按位反
friend Integer* operator&(Integer& a); //逻辑与
friend int operator!(const Integer& a); //逻辑非
Integer& operator=(const Integer& a)
{
i = a.i;
return *this;
}
};
// Global operators:
const Integer& operator+(const Integer& a)
{
cout << "+Integer\n";
return a; // Unary + has no effect
}
const Integer operator-(const Integer& a)
{
cout << "-Integer\n";
return Integer(-a.i);
}
const Integer operator~(const Integer& a)
{
cout << "~Integer\n";
return Integer(~a.i);
}
Integer* operator&(Integer& a)
{
cout << "&Integer\n";
return a.This(); // &a is recursive!
}
int operator!(const Integer& a)
{
cout << "!Integer\n";
return !a.i;
}
// Show that the overloaded operators work:
void f(Integer a) {
+a; //call function: operator+(a)
// a = +a;
-a;
~a;
Integer* ip = &a;
!a;
}
void main()
{
Integer a(20);
Integer b(2);
const Integer c(30);
+c;
+(+c);
-a;
-(-a);
// -a = b;
-c;
// -a = b;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -