Re: Build-in types initialization
From: Sharad Kala (no.spam_sharadk_ind_at_yahoo.com)
Date: 02/25/04
- Next message: Frank Chow: "Why realloc? (in __default_alloc_template, file: stl_alloc.h) (GCC ver 3.3.3)"
- Previous message: Qin Chen: "some question about static member"
- In reply to: Marcin Kalicinski: "Re: Build-in types initialization"
- Next in thread: Andrey Tarasevich: "Re: Build-in types initialization"
- Reply: Andrey Tarasevich: "Re: Build-in types initialization"
- Reply: Marcin Kalicinski: "Re: Build-in types initialization"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Wed, 25 Feb 2004 20:30:13 +0530
"Marcin Kalicinski" <kalita@poczta.onet.pl> wrote in message
news:c1ibcm$e3b$1@korweta.task.gda.pl...
> Hi all,
>
> Thanks for your answer, but if it is true, how do I define my custom class
> so that it follows the same schema? It seems impossible, because there's no
> way to distinguish between these 2 types of initialization when writing
> class definition. Both are handled by default constructor.
>
> To be specific, I'd like to define class Vector3, which is a 3 dimensional
> vector. If I initialize coordinates to zeroes in default constructor, I get
> behavior 'i2'. If I do not initialize, I get behavior 'i1'. But I'd like to
> get both if them, so that Vector3 does not differ in this important point
> from built-in types. Additionally, Vector3 is to be used in
> performance-critical code, so I'd like to avoid unnecesary initialization if
> possible - so 'i1' behavior is probably a must to have.
You got it wrong.
The default constructor for int, float, bool initializes them to 0 /false.
But that does not mean that ints, floats etc in UDTs will also be default
initialized in the default constructor.
In this code -
#include <iostream>
using namespace std;
struct A{
int i;
A(){}
A(int I):i(I){}
};
int main(){
A a1 = A(); // Default const
cout << a1.i; // Print garbage..don't expect 0
A a2(10);
cout << a2.i; // Print 10
}
- Next message: Frank Chow: "Why realloc? (in __default_alloc_template, file: stl_alloc.h) (GCC ver 3.3.3)"
- Previous message: Qin Chen: "some question about static member"
- In reply to: Marcin Kalicinski: "Re: Build-in types initialization"
- Next in thread: Andrey Tarasevich: "Re: Build-in types initialization"
- Reply: Andrey Tarasevich: "Re: Build-in types initialization"
- Reply: Marcin Kalicinski: "Re: Build-in types initialization"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|