C#运算符重载 问题

using System;
class BooleanInt
{
private int i;
public int Int
{
get
{
return i;
}
set
{
i = value;
}
}
public BooleanInt()
{
}
public BooleanInt(int i)
{
Int = i;
}
public BooleanInt(BooleanInt bi)
{
Int = bi.Int;
}
public static BooleanInt operator +(BooleanInt bi)
{
return new BooleanInt(bi.Int);
}
public static BooleanInt operator -(BooleanInt bi)
{
return new BooleanInt(-bi.Int);
}
public static bool operator !(BooleanInt bi)
{
if (bi.Int == 0)
return true;
return false;
}后面没有写了

请问public BooleanInt(BooleanInt bi)
{
Int = bi.Int;
}
这是个构造函数吗?难道参数是自己的类型的参数?
public static BooleanInt operator -(BooleanInt bi)
{
return new BooleanInt(-bi.Int);
}
这里面的 return new BooleanInt()是个什么语法??

问题1:是构造函数,这种叫拷贝构造函数
比如说:你声明了一个变量BooleanInt a;
那么,你就可以用BooleanInt b(a);这样的语句来声明变量b,相当于将a中的内容拷贝到b中了。
问题2:这里就用到了前面的拷贝构造函数,首先,new BooleanInt(-bi.Int);意思就是分配一块内存空间,这块内存的类型是BooleanInt,其中的内容就是bi的负数,前面加上return 就是返回这块内存的地址
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-11
第一个问题:
是构造函数,参数是BooleanInt 的对象,就相当于用一个对象去构造出另一个对象……
第二个问题:
和第一个其实差不多,return new BooleanInt()表示返回一个BooleanInt对象,该对象是用传进来的-bi.Int作为参数(调用public BooleanInt(int i) { Int = i;} 构造出来的对象)
满意吗??^_^
相似回答
大家正在搜