SV变量类型详解(全局,const,local,protect,public,static,automatic)

1.全局变量

   没有对应的修饰符,在所有类/module外定义即可在这些类/module中使用.

   该类型变量仅可与const类型混用。

   如图所示,在class和module外定义,可以在这些class和module中使用,共用同一个数据。

2.local/protect/public

互质类型,主要在class中区分类型,可以与3类型混用

   2.1 public

        无对应修饰符,为默认类型。作用域最大,可在子类和外部中使用。

   2.2 protect

         仅在class中能定义该类型变量,修饰符为protected,可在子类中修改使用,不可在外部使用

   2.3 local

        仅在class中能定义该类型变量,修饰符为local,作用域最小,仅可在本类中使用,不可在子类和外部使用

  2.4 示例

     在父类father中分别定义三种类型变量,且在函数中赋值。

     在子类son中可以直接使用public类型和protect类型变量,若是使用local类型变量将会报错

     在module中例化father类,仅可以使用public类型变量,若是调用local/protect类型变量将会报错

3.const/static/automatic

互质类型,不可同时使用,可与类型2混用

   3.1 const

       常量类型,修饰符为const,仅可在初始化时赋值,若无赋值,将默认为0,后续赋值将会报错,该类型变量可以与1,2的类型混用。

       SV的语法中,若是在定义时赋值,需要写在未赋值的所有定义变量后面,否则将会报错。但常量的定义和赋值可以写在未赋值的定义变量前不会报错。

  3.2 static

        静态变量,修饰符为static,在定义时将会被分配一个固定存储空间,每次回到定义/调用函数将会使用上次结束值.

  3.3 automatic

        动态变量,修饰符为automatic,在函数中定义该类型变量,每次结束函数都会收回为变量分配的空间,下次进入函数时将会为初始值。

  3.4 默认类型

       在该组中没有默认类型,因为在class内定义的默认变量和在module中定义的默认变量的类型是不一致的。在module中定义的默认类型(不加修饰符)为static类型的变量,即将会被分配固定空间。在class中定义的默认变量为automatic类型的变量,每次进入函数都将会分配新的默认值。

   3.5示例

       在class/module中分别定义默认类型,automatic类型,static类型。并循环两次打印。

可以得到打印结果:

看到class中的变量default类型和automatic类型的现象一致,每次进入函数都是默认值1,而static变量在第二次/第n次进入函数时将忽略默认值配置,使用上次的结果值。

而module中定义的默认类型与static类型现象一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值