1.请问大家C#中 2个对象在什么样的情况下可以互相赋值 2.对象的关系:比如2个对象是父子的关系 或者 兄弟类关系. 3.2个对象中有指针数据类型,可以互相赋值吗?(个人感觉如果2个对象有都含有指针类型,好象不能够互赋值) 3.如果满足互相赋值的情况下:
疑问:兄弟类互相赋值 特别难理解其中的
都是重载或者覆盖父类的函数
这些函数怎么对接起来 转换
被转换后的类到底调用哪个函数
4.当子类向父亲类转换时
疑问1: 会丢失数据吗?
疑问2: 如果父类有虚函数,是怎样转换的。
恳求的大家帮助,先谢谢了!!!
疑问:兄弟类互相赋值 特别难理解其中的
都是重载或者覆盖父类的函数
这些函数怎么对接起来 转换
被转换后的类到底调用哪个函数
4.当子类向父亲类转换时
疑问1: 会丢失数据吗?
疑问2: 如果父类有虚函数,是怎样转换的。
恳求的大家帮助,先谢谢了!!!
1、“相互赋值”的话,只怕是类型完全相同的对象了吧
2、父子关系就是被继承和继承的关系,“兄弟关系”应该是拥有共同父类的对象吧
3、指针?不懂……
3、俩3……貌似“兄弟对象”不能相互赋值……
4、父类不能访问子类的成员,算不算“丢失数据”?
父类的虚方法如果被子类重写(override)了,将会调用子类的方法(虚方法在父类和子类的方法表中的偏移量是相同的)
父类的虚方法如果被子类阻断(new)了,将会调用父类的方法(new了一个新方法,放到了子类虚方法的pg后面) class A
{
public virtual void Method()
{
MessageBox.Show("1");
}
} class b : A
{
public override void Method()
{
MessageBox.Show("2");
} } class c : A
{
public new void Method()
{
MessageBox.Show("3");
}
} private void button1_Click(object sender, EventArgs e)
{
b b = new b();
c c = new c();
A a = b;
A d = c;
a.Method();//2
d.Method();//1
}