Home » Community » Newbie corner » Order of member initialization  
	
		
		
			| Re: Order of member initialization [message #58868 is a reply to message #58867] | 
			Tue, 20 September 2022 17:05    | 
		 
		
			
				
				
				
					
						
						Tom1
						 Messages: 1305 Registered: March 2007 
						
					 | 
					Ultimate Contributor  | 
					 | 
		 
		 
	 | 
 
	
		peterh wrote on Tue, 20 September 2022 17:47I must correct myself, it doesnt work. 
This code: 
#include <Core/Core.h>
using namespace Upp;
class A{
public:
	Array<int> *array;
	A(Array<int> &array_) : array(&array_){
		Cout() <<"construct A\n";
		Cout() << "Array Initial item count in A = " << array->GetCount() << "\n";
	}
};
class B : public A{
public:
	Array<int> b_array;
	void *p=&b_array;
	B() : A(b_array){
		Cout() <<"construct B\n";
		Cout() << "Array Initial item count in B = " << b_array.GetCount() << "\n";
	}
};
CONSOLE_APP_MAIN{
	B b;
	Cout() <<"Fertig\n";
	Sleep(1000000);
} 
produces this output: 
construct A
Array Initial item count in A = 107746496
construct B
Array Initial item count in B = 0
Fertig
  
 
So constructor A is executed, before B was constructed. 
 
It should however work, if A doesnt use or touch the referenced array before it was constructed.  
 
Hi Peter, 
 
Yes, it does work when the constructor of A does not use or pass the array on to be used by others. However, this may get difficult to control when projects are large. 
 
Best regards, 
 
Tom
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
  
 
	
	  | 
	 | 
	
		Order of member initialization
		By:  Tom1 on Tue, 20 September 2022 11:19  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  Tom1 on Tue, 20 September 2022 13:29  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Tue, 20 September 2022 15:19  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Tue, 20 September 2022 16:47  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  Tom1 on Tue, 20 September 2022 17:05  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Tue, 20 September 2022 17:48  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Tue, 20 September 2022 22:59  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  Tom1 on Wed, 21 September 2022 09:55  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Wed, 21 September 2022 11:49  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Wed, 21 September 2022 12:37  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Wed, 21 September 2022 15:11  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Fri, 23 September 2022 00:26  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Fri, 23 September 2022 01:13  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		By:  peterh on Fri, 23 September 2022 01:33  
	 | 
 
	  | 
	 | 
	
		Re: Order of member initialization
		
	 | 
  
Goto Forum:
 
 Current Time: Tue Nov 04 13:23:51 CET 2025 
 Total time taken to generate the page: 0.04179 seconds 
 |