前两天在CSDN里看到这篇文章
http://blog.csdn.net/absurd/archive/2006/06/06/776682.aspx里面有几点疑问,望指教!1.    你对DOC/VIEW模型是如何理解的?      重新翻了下 深入浅出MFC 里讲DOC/VIEW那一章,基本上理解了MFC实现它的方式(通过CDocTemplate把Frame View Document关联起来,当然还有种关联方式用CCreateContext)但对其在实际项目中的用途有点模糊,请谈一下大家在项目开发过程中怎么去把MVC这模型结合到自己项目中来的!以及它具体的应用情况! 在我的理解看来,DOC这一东东就仅仅是在Serialize上(通过CArchive类实现)还有些什么关键性的用途吗? 感觉这东东有点模糊,请详解,谢谢2      大多数应用程序都只需要一种形式去表现,为什么还是要采用DOC/VIEW模型呢?
       3.      一般提倡把用户界面和内部实现分离,你知道有几种方式可以把用户界面和内部实现分离吗?    除了这种还有些什么?4.   用new分配的指针,你可以判断指针是否为空吗?
    
    不太明白这意思
    char* value = "Stefanie924";
char * data ;
data = new char( strlen(value) +1 );
if( data != NULL)
{
strcpy( data, value );
}
cout<< data <<endl;
        这样算判断吗?5.     Copy constructor function与Assginment的差别?
       
       拷贝构造是对未建立的对象,而Assginment是对已存在的对象(先delete原有对象所有的资源,然后再copy constructor ),
      如CString str = new CString("Test");  
        CStirng strTest = str; //此处为copy sonstructor而非assginment
   理解没错吧,还有些什么差别,请赐教 

解决方案 »

  1.   

    1 在java中学过,不过还是搞不清楚mvc到底是怎么回事
      不过相关的框架很多,大概就是把数据育封装,v c 层就说不清了2 3 5我也想知道 4.   用new分配的指针,你可以判断指针是否为空吗?
    是由于 new 操作很可能因为内存不足等原因而操作失败, 此时返回空指针,
    判断是决定是否能进行后续操作的  
    strcpy( data, value ); 否则会产生 assertion error
      

  2.   

    1~3,属于设计模式的范畴.
    4.差不多?
    5.The C++ Language?
    一般的C++大师会用operator=来实现Copy Constructor,因此其实两者是相辅相承的。
      

  3.   

    1-3我也晓得是设计模式的范畴,自己连那个经典的《设计模式》书都没看过,更不用说这方面的经验了,所以特来请教下在这方面有经验的牛人们,毕竟这方面只有实践经验才靠得住!哪个牛人简单的说下也好!谢了先4的话,应该就那个样5的话,谁还可以补充些
    楼下的 Continue
      

  4.   

    1. 你对DOC/VIEW模型是如何理解的?下面的题目就回答了这个问题2 大多数应用程序都只需要一种形式去表现,为什么还是要采用DOC/VIEW模型呢?谁能保证只需要一种?哪天想要另一种了呢?不用doc/view的话,改死.
    之所以要分开,就是为了解耦,以后改界面不影响数据模型.3. 一般提倡把用户界面和内部实现分离,你知道有几种方式可以把用户界面和内部实现分离吗?界面和数据模型解耦,就可以叫doc/view模式,至于是不是MFC的doc/view都无所谓了4,用new分配的指针,你可以判断指针是否为空吗?新的c++编译器,new失败默认是throw bad_alloc异常,所以,判null是没用的.5.Copy constructor function与Assginment的差别?一个有返回值,一个没...
    一个是拷贝构造时用的,一个是赋值时用的...
    赋值时要注意自赋值问题,拷贝构造没这个问题...
    ...
      

  5.   

    1-3 期待牛人4,差不多了,不过我一般在指针变量声明时负初值
     char * data = NULL;5.CString str = new CString("Test");  
    编译不通过 CStirng strTest = str;应该是负值函数
    拷贝构造函数应该是
     CString str("test");
     CString strTest(str);期待牛人详解楼下继续
      

  6.   

    CStirng strTest = str;应该是负值函数---
    错,是拷贝构造
      

  7.   

    去看了看blog,有点意思
    估计那个面试的人也是在捣乱吧,不是很相信会这样的,呵呵
      

  8.   

    谢了,天狼星星的回答1-3: 现在还想听听各位牛人们在实际经验中是怎么用DOC/VIEW这样的模型的,不会就是派专人负责界面,专人负责数据模型的构建吧,具体应用到哪些工具,让我大概了解下啊(主要是想了解下这实际中这个的生产过程)4-5:已解决期待牛人的回复我结帖很快的
      

  9.   

    没你想的那么复杂,doc/view模型,其实就是对应于设计模式中的observer观察者模式,view就是doc的observer,doc是subject,doc和view之间是一对多的关系.
    这个一般不需要专人分开去设计的,也不需要什么特别的工具.
      

  10.   

    第四点,没人答对啊,看来大家都不喜欢看书啊,按C++ 标准,new分配的内存,当分配失败时会抛异常,而不是返回NULL指针.