• 声明 与 定义 (vc)


    函数的声明与定义应该很好区分,有函数头,定义也叫实现吧。

    今天忽然感觉生命与定义要好好想想,vc中与c#应该略有不同。

    C#中的变量声明,如在一个class A中,int i;那么就只是声明,那么赋值才叫定义?  那么class声明对象后l例如A a;也不叫定义,还是声明,必须new(c#里面new的含义与cpp相差好远 --)之后a=new A();,i才会产生定义吧?那么如此说来,int i的时候即使赋值也只算声明吧?声明的同时有默认值?那么所在class new之后才会产生真正定义吧,也就是只有用的时候才会分配内存?我不知道真相是不是这样,记得我的老师是这样告诉我的。

    现在学习VC,发现略有不同。先不说Cpp不一定全包在class中,但是使用的时候一旦有int i;,貌似就会加载进内存,就是定义了。头文件除外,头文件中的肯定是声明,在所在class产生对象的时候才会产生定义。不知道我表述得清楚不清楚--#

    在网上看到的例子说得好,但是我觉得class   AAAA;  你得看放在哪里,放在头文件叫声明,如果放在一个在使用的类中应该就是定义了,当然,定义之前你得先有声明(可以不实现么?)。

    class   AAAA;   //这是声明  
      class   AAAA     //这是定义  
      {  
      };  
      AAAA   aaaa;   //这是定义  
      AAAA   *   aaaa;   //这也是定义  
      int   max(int   a,   int   b);   //这是声明  
      int   max(int   a,   int   b)  
      {  
      return   ..;  
      }//这又是定义。

    那头文件中的变量声明貌似很全局,那么和static比较呢?很简单,还是用上面的class A 和int i,int i在ClassA中声明,不加static,那么A a和A b的i成员是不同的,如果加了static那么a和b中的i应该是同一个。感觉在头文件声明的变量很有"成员的感觉",用来做数据存储很方便,而在cpp文件中的变量定义(貌似只能定义 不算方法参数) 使用起来要注意安排了。一般如果是外来类型如系统的CFile可以放在cpp中,而自己本身的变量放在头文件的好,这个可能需要具体体会,这是我最近的体会。

    不过到这里我又晕了 能从分配内存的角度说声明定义么?那应该从哪个角度说呢?原理性基础知识踏实的童鞋们,看到的话帮忙解析一下

    发现个错误 static是编译时分配空间的 推荐一下肖舸的《内存》这篇文章 很深刻

  • 相关阅读:
    单例模式
    java笔记 chapter7 抽象类和数组
    java笔记 chapter6 StringBuffer类和String Bulider类,Math类 Date类,Calendar类
    设计上的若干问题
    Java中的二次分发
    关于抽象
    SSI框架下同一个Bean加载了2次问题解决
    Hello 2015
    关于window.location.href is not a function在FF,chrom报错问题
    使用Eclipse的一些小心得!
  • 原文地址:https://www.cnblogs.com/elanp/p/1602627.html
Copyright © 2020-2023  润新知