Template or union
2 отговора
127 прегледа
Template or union
Problemyt e sledniat:
triabva da napisha edin klas s edna private chlen-probmenliva _var. Tipa na _var moje da byde ili int, ili bool, ili char, ili double i se set-va sled kato e syzdaden obekt ot klasa. Do tuk se seshtam za dva varianta:
1. da definiram _var kato union type. Taka obache ako dori i da set-ma _var na char , rameryt shte i e naj - mako raven na razmera na do double.
2. da napravia klasa na Template - togava pyk i poniatie si nimam kakvo stava s pametta.
Ta vyprosyt mi e kak mislite , ot gledna tochka na harcheneto na pamet koj variant e po udachen?
triabva da napisha edin klas s edna private chlen-probmenliva _var. Tipa na _var moje da byde ili int, ili bool, ili char, ili double i se set-va sled kato e syzdaden obekt ot klasa. Do tuk se seshtam za dva varianta:
1. da definiram _var kato union type. Taka obache ako dori i da set-ma _var na char , rameryt shte i e naj - mako raven na razmera na do double.
2. da napravia klasa na Template - togava pyk i poniatie si nimam kakvo stava s pametta.
Ta vyprosyt mi e kak mislite , ot gledna tochka na harcheneto na pamet koj variant e po udachen?
Re: Template or union
Misli za templates kato za preprocesvane - kato obqvish templaten class
template< typename T>
class CMyClass {
public:
typedef T Type;
Type m_Data;
};
i go instancirash:
CMyClass<int> a;
CMyClass<bool> b;
vse edno si napisal dva razlichni klasa CMyClassInt i CMyClassBool, vseki ot koito ima member int m_Data i bool m_Data. T.e. vseki izpolzva samo tolkova pamet, kolkoto e template-niq tip.
Osven tova reshenieto s template e po-obshto, zashtoto v union ne mojesh da slojish obekti, koito imat netrivialen default constructor. naprimer ako imash
class CClass {
Class(int a);
};
ne mojesh da imash
union {
Class cl; //(nishto che nqma memberi, obekta po standart zaema min 4 bajta)
int i;
};
HTH
There's a crack, a crack in everything, that's how the light gets in...
template< typename T>
class CMyClass {
public:
typedef T Type;
Type m_Data;
};
i go instancirash:
CMyClass<int> a;
CMyClass<bool> b;
vse edno si napisal dva razlichni klasa CMyClassInt i CMyClassBool, vseki ot koito ima member int m_Data i bool m_Data. T.e. vseki izpolzva samo tolkova pamet, kolkoto e template-niq tip.
Osven tova reshenieto s template e po-obshto, zashtoto v union ne mojesh da slojish obekti, koito imat netrivialen default constructor. naprimer ako imash
class CClass {
Class(int a);
};
ne mojesh da imash
union {
Class cl; //(nishto che nqma memberi, obekta po standart zaema min 4 bajta)
int i;
};
HTH
There's a crack, a crack in everything, that's how the light gets in...