Ո՞րն է տարբերությունը (int) x- ի և int (x) - ի միջև C ++- ում:


պատասխանել 1:
(int) x; // x- ը այլ տիպից վերածում է int

Նշանակում է C-cast- ից յուրաքանչյուր տիպի x- ից դեպի int: Եվ,

int (x); // նշանակում է int x;

նշանակում է միայն int x; ...

Փորձեք չօգտագործել այս ձևերից որևէ մեկը, քանի որ առաջին ձևը օրինական է (լավագույն դեպքում վատն է), և եթե այն իսկապես անհրաժեշտ է, դուք պետք է օգտագործեք static_cast <> իրականում պարզելու համար, թե ինչ է կատարվում (այնպես որ ոչ մի անակնկալ): Երկրորդը պարզապես շփոթեցնող է, քանի որ փակագծերն ավելորդ են:


պատասխանել 2:

Ոչ մի տարբերություն չկա:

Ընդհանուր առմամբ, C ++ T- ում (x) («գործառույթի ոճի վերափոխում») և (T) x («C ոճի փոխակերպում») երկու ձևի ակնհայտ տիպի վերափոխման երկու համարժեք ձևեր են:

Միակ տարբերությունն այն է, որ T (x) ձևը պահանջում է, որ T- ը լինի «պարզ տիպի ցուցիչ»: Սա մոտավորապես նշանակում է, որ դա մեկ նշան է. Դուք չեք կարող գրել չստորագրված int (x) կամ int * (x):


պատասխանել 3:

Ոչ մի տարբերություն չկա:

Ընդհանուր առմամբ, C ++ T- ում (x) («գործառույթի ոճի վերափոխում») և (T) x («C ոճի փոխակերպում») երկու ձևի ակնհայտ տիպի վերափոխման երկու համարժեք ձևեր են:

Միակ տարբերությունն այն է, որ T (x) ձևը պահանջում է, որ T- ը լինի «պարզ տիպի ցուցիչ»: Սա մոտավորապես նշանակում է, որ դա մեկ նշան է. Դուք չեք կարող գրել չստորագրված int (x) կամ int * (x):