Egy javascriptes vahy php-s változónak mi a megfelelője c++-ban? std::any vagy esetleg std::variant?
Ne keverjük a nyelvek közötti értékeket. De mindnek vagy egy fajta hasonlata. Alábbiakban látod, hogy pl.: C++ban egy long a Java int-el felel meg, PHP-ban meg "belefér" a tartományba.
C/C++-ban egy int 16 bites történet:
=> [link]
Java-ban egy int 32 bites történet:
=> [link]
PHP-ban rendszer függvényében van korlát.
=> [link]
=> (PHP_INT_MAX) 64bites rendszerben 64bites lesz a MAX-a. "The largest integer supported in this build of PHP. Usually int(2147483647) in 32 bit systems and int(9223372036854775807) in 64 bit systems. Available since PHP 5.0.5"
A PHP és a JavaScript dinamikusan tipizált nyelvek, a C++ pedig statikusan. Dinamikus nyelvekben nem kötelező foglalkoznod azzal, hogy a változóid milyen típusúak, ezt a rendszer megpróbálja automatikusan rendezgetni neked, és legfeljebb futási idejű hibát kapsz, ha valamit nagyon elrontasz. Statikus nyelvekben a változóknak előre megadott fix típusa van, és fordítási idejű hibát kapsz, ha valami nem kompatibilis egymással.
Ha arra gondolsz, hogy hogyan lehetne a C++t úgy használni, mintha dinamikus lenne, akkor a válasz az, hogy nem lehet, és nem jó nyelvet választottál, ha erre szükséged van. Ha kevésbé akarok szigorú választ adni akkor igen, az std::any-vel meg az std::variant-tal lehet úgy kódot írni, ami dinamikus tipizáláshoz távolról hasonlít, de ha arra számítasz, hogy ezekkel úgy fog működni, mint a PHP, akkor csak csalódni és frusztrálódni fogsz. Ezeket amúgyis csak olyan esetekben érdemes használni, amikor erre tényleg szükség van, ami tapasztalatom szerint egészen ritka. Ha azon kapod magad, hogy mindenhova std::any-ket akarsz írni, akkor rossz szemléletmóddal próbálsz C++ kódot írni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!