注册 登录
Office中国论坛/Access中国论坛 返回首页

ganlinlao的个人空间 http://www.office-cn.net/?230471 [收藏] [复制] [分享] [RSS]

日志

FreeBasic的面向对象入门二——冬瓜汤整理

已有 2683 次阅读2014-10-7 14:34 |个人分类:FreeBasic

8、构造函数(constructor

          当创建一个对象时,系统先根据类定义的成员变量为对象分配内存空间,然后自动调用对象的构造函数对这段内存空间进行初始化处理,从而完成对象的初始化。

构造函数的作用:

      为对象分配空间;对数据成员赋初值,请求其他资源

构造函数的调用:

  • 生成类对象时,其成员可用类的构造函数初始化。
  • 当类对象进入其作用域,自动调用构造函数

构造函数的特点:

      构造函数是与类同名的成员函数

      可有任意类型的参数,但没有返回类型

     若构造函数无参数,则声明对象时也不能给出参数

构造函数的种类:

  • 默认构造函数
  • 自定义构造函数
  • 带默认参数的构造函数

         带参数的构造函数可以在创建对象时,用具体数值初始化数据

         成员和各种数据元素。可方便实现对不同对象进行初始化。

构造函数的首部:

      构造函数名(形参列表)

      定义对象的一般格式

      类名 对象名(实参列表)

重载构造函数:

      构造函数可以像普通函数一样被重载

      在类中可以定义多个构造函数,以便对类对象提供不同的初始化方法

      根据说明中的参数个数和类型选择合适的构造函数


9、析构函数(destructor

构造函数的反函数,析构函数是用于取消对象成员函数,当一个对象生命期结束时,系统自动调用析构函数,释放对象所占内存空间

  • 析构函数没有参数和返回值
  • 一个类中只可能定义一个析构函数
  • 析构函数不能重载

析构函数的作用:

     进行清除对象,释放内存等

 10、This指针:

This指针是一个特殊的隐藏在对象中的指针,每一个处于生存期的对象都有一个this指针,用于指向对象本身。

当类的某个非静态成员函数被调用时,系统通过this指针确定是哪一个对象的该成员函数被调用。实际上,this指针总是作为一个隐含参数传递给类的每一个成员函数。


11、静态成员

             关键字static用于说明一个类的静态成员

  • 静态成员提供了一个同类对象的共享机制

       把一个类的成员说明为stastic时,这个类无论有多少个对象被创建,这些对象共享这个stastic成员

  • 静态成员属于类,它不是对象成员。

静态类成员数据:

  • 静态成员是指声明为static的类成员在类的范围内所有对象共享某个数据

  • 类定义中的静态成员生命期与整个程序相同

  • 静态成员变量在类的内部声明,类的外部定义

  • 静态数据成员不从属于任何一个具体对象,所以必须对它初如化,且对它的初始化不能在构造函数中进行。

 

静态数据成员的使用方法如下:(这个需要补充)

静态数据成员的定义与一般数据成员相似,但前面要加上Stastic关键词

 

静态数据成员VS全部变量:

  • 有了静态数据成员,各对象之间的数据有了沟通的渠道,实现数据共享。
  • 全局变量破坏了封装原则,不符合面向对象程序的要求。
  • 公用静态数据成员与全局变量的作用域不同
  • 静态数据成员的作用域中限于定义该类的作用域内。

 

静态成员的访问:

公有静态成员:

1)通过对象访问,如: person1.count

 (2) 在成员函数中访问

私有和保护静态成员:只能在成员函数中访问

静态成员函数:

可由任意访问权限许可的函数访问。

和一般成员函数类似,静态成员函数也有访问限制,私有静态成员函数

不能由外界访问。

只能访问静态数据成员、静态成员函数和类以外的函数和数据;不能访问

类中的非静态数据成员。

静态成员函数没有this指针

静态成员函数的作用:

处理静态数据成员

 

说明:freebasic中将对象作为静态成员函数的参数,然后可以通过对象来访问它的非静态数据成员

例子

Type foo

    Declare Static Sub f (ByRef As foo)   

    i As Integer

End Type

Sub foo.f (ByRef self As foo)    这里的self就是类foo的一个实例对象。如果没有self这个实例对象,访问非静态成员将会编译错误。

        Print self.i

End Sub

 

静态成员函数VS非静态成员函数:

根本区别是:

  • 非静态成员函数有this指针
  • 静态成员函数没有this指针。由此决定了静态成员函数不能访问本类中的非静态成员。


评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-20 04:31 , Processed in 0.072112 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部