首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C# 先有鸡还是先有蛋的代码能不能用C++实现解决办法

2012-02-05 
C# 先有鸡还是先有蛋的代码能不能用C++实现看看这段C#的代码,来自C#设计模式(1)http://www.cnblogs.com/zh

C# 先有鸡还是先有蛋的代码能不能用C++实现
看看这段C#的代码,
来自C#设计模式(1)  
http://www.cnblogs.com/zhenyulu/articles/36058.html

-------------------------------------------
using   System;

class   Client
{
      public   static   void   Main   ()
      {
            Base   b   =   new   Base();
            Derived   d   =   new   Derived();
            b.d   =   d;
            Console.WriteLine(b.d.m);            
      }
}

class   Base
{
      public   int   n   =   9;
      public   Derived   d;
}

class   Derived   :   Base
{
      public   int   m   =   10;      
}

Derived继承自Base,可以说没有Base就没有Derived,可Base里面有一个成员是Derived类型。到底是先有鸡还是先有蛋?这个程序可以正常编译执行并打印结果10。

----------------------------------------------
C++可以支持父类对子类实例化的调用么
请高手指教

[解决办法]
class Derived;
class Base
{
public:
int n;
Derived* d;
};

class Derived : public Base
{
public:
int m;
};

无法提前定义实例,
但是可以通过 前置声明 定义一个 指针或者引用。
[解决办法]
class Base
{
public int n = 9;
public Derived d;《===这个时候d是一个类似指针的东西。所以可以这样声明
}

[解决办法]
这种代码能编过去吗?C# 太恶心了。
[解决办法]
因为C#里的public Derived d;是引用的所以可以,跟C++中指针一样

==============================================
jixingzhong(瞌睡虫·星辰) 已经给出方法了
==============================================
LZ可以试一下是否可以直接生成实例
[解决办法]
jixingzhong(瞌睡虫·星辰) 说得对.
[解决办法]
连哲学家都搞不清的事情,用c++就能搞出来?
[解决办法]
C#中对引用类型这么做肯定是可以的,因为引用类型的变量就相当于一个指针,所以这就好比C++中子类里头有指向父类的指针,同时父类里头也拥有指向子类的指针,语法上没有任何问题的。当然,设计上不太好。

而C#中的值类型肯定是不能这么作的,因为定义一个值类型的变量就相当于C++中定义了一个对象(而不是一个指针或引用),肯定不可以同时蛋里有鸡里有蛋里有鸡里有蛋……

热点排行