Suppose I have a class module clsMyClass with an object as a member variable. Listed below are two complete implementations of this very simple class.
Implementation 1:
Dim oObj As New clsObject
Implementation 2:
Dim oObj As clsObject Private Sub Class_Initialize() Set oObj = New clsObject End Sub Private Sub Class_Terminate() Set oObj = Nothing End Sub
Is there any functional difference between these two? In particular, is the lifetime of oObj the same?
In implementation 1 the clsObject will not get instantiated until it is used. If it is never used, then the clsObject.Class_Initialize event will never fire.
In implementation 2, the clsObject instance will be created at the same time that the clsMyClass is instantiated. The clsObject.Class_Initialize will always be executed if clsMyClass is created.