Domov Osobní finance Silně zadané číslování v C ++ - figuríny

Silně zadané číslování v C ++ - figuríny

Video: Statistical Programming with R by Connor Harris 2025

Video: Statistical Programming with R by Connor Harris 2025
Anonim

Programování se týká čitelnosti. Je těžké (vlastně není možné) psát a udržovat program, který nemůžete číst. Část čtení seznamu zdrojových kódů je pochopení toho, co čísla představují v programu. Nejzákladnější podpora, kterou poskytuje C ++, je všudypřítomná #define, jako v následujícím příkladě:

#define PI 3. 141592653589793

Toto řešení je v pořádku pro jednotlivé hodnoty, i když trpí skutečností, že mechanismus #define není (striktně řečeno) součástí C / C ++, protože předprocesor běží před kompilátorem. V reakci na to C ++ 2011 představil konstantu konstanty :

kontextr dlouhý dvojitý PI = 3. 141592653589793;

Klíčové slovo constexpr přináší konstanty do stanu C ++. Tento PI má skutečný typ, stejně jako ostatní proměnné C ++. C ++ může generovat chybové zprávy s PI, které mají mnohem větší smysl než ty, které se týkají 3. 14159.

Konstantní výrazy jsou dobré pro jednotlivé konstantní hodnoty, ale často konstanty představují množiny věcí spíše než přírodní konstanty, jako v následujícím příkladu:

#define DC_OR_TERRITORY 0 #define ALABAMA 1 #define ALASKA 2 #define ARKANSAS 3 // … a tak dále …

Předpokládá se, že tyto konstanty se používají k identifikaci států, index do pole stavových objektů nebo jako hodnota v databázi někde.

C ++ má dlouho zdokonalený mechanismus pro definování těchto typů konstant - výčet:

enum STATE {DC_OR_TERRITORY, // dostane 0 ALABAMA, // dostane 1 ALASKA, // dostane 2 ARKANSAS, // … a již brzy…};

Klíčové slovo enum představuje sekvenci konstant nazvanou "enumeration". V tomto případě obsahuje výčet název STATE. Každému prvku tohoto výčtu je přiřazena hodnota začínající na 0 a postupně zvyšující se o 1, takže DC_OR_TERRITORY je definována jako 0, ALABAMA je definována jako 1 a tak dále. Tuto přírůstkovou sekvenci můžete přepisovat pomocí příkazu assign:

enum STATE {DC, ÚZEMÍ = 0, ALABAMA, ALASKA, // … a tak dále …};

Tato verze STATE definuje prvek DC, který je dán hodnotou 0. Pak definuje nový prvek TERRITORY, který je také přiřazen hodnotě 0. ALABAMA zvedá s 1, stejně jako předtím.

Programátor může v praxi používat výčty, aby napsal zcela čitelný kód, jako je následující:

double taxRate (STATE s) {return taxRatesByState [s];}

Jediným problémem tohoto přístupu je to, nevytváří nový typ (jak si myslíte).Ve skutečnosti je podle standardu STATE jen jiný název pro int - a konstanty ALABAMA, ALASKA a tak dále jsou všechny typu const int.

Kompilátor gcc ve skutečnosti poskytuje enum takto deklarovanou trochu více autority, než jednoduše nazývat jinou formu int. Funkce můžete skutečně přetížit na základě typu enum:

void fn (STATE s); void fn (int n); fn (ALASKA); // invokes fn (STATE)

Standard pro rok 2011 umožňuje programátorovi vytvořit zcela nový typ pomocí klíčového slova enum. Vzhledem k tomu, že tvůrci nového standardu nechtěli porušovat stávající kód, standard vyžaduje přidání dalšího klíčového slova za účelem definování typu výčtu, jako v následujícím příkladu:

enum třída STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … a tak dále …};

Třída výčtu je nyní v plném rozsahu jako každá jiná třída definovaná uživatelem. Následující není již legální ze dvou důvodů:

int s = ALASKA;

Nejprve je konstanta ALASKA definována pouze v oboru názvů STATE. Název konstanty je tedy STÁT:: ALASKA. Za druhé, typ není int, ale STATE. Hodnotu typu STATE nelze přiřadit int.

STATE s = STÁT:: ALASKA;

Programátor může přepracovat STATE do int, ale musí to udělat explicitně -implicit konverze neřízne s výčtem třídy:

int n = (int) STATE:: ALASKA;

Tento nový typ enum může být také založen na jednom z dalších typů číselných čísel kromě int:

třída enum STATE: char {DC, // … zbytek deklarace je stejný
Silně zadané číslování v C ++ - figuríny

Výběr redakce

, Jak přidat obrázek pozadí do aplikace Excel 2010 sešitu - figuríny

, Jak přidat obrázek pozadí do aplikace Excel 2010 sešitu - figuríny

, Můžete přidat grafický obrázek na pozadí buněk v listu aplikace Excel 2010. Obraz na pozadí (někdy nazývaný vodoznak) by měl mít velmi světlé barvy nebo použít výrazně omezenou opacitu, aby byly data vašeho listu přečtena po obraze. Tato funkce může být docela efektivní, pokud ...

Jak přidat komentář k buňce v aplikaci Excel 2013 - dummies

Jak přidat komentář k buňce v aplikaci Excel 2013 - dummies

Můžete přidat text komentáře k jednotlivým buňkám v listu aplikace Excel 2013. Komentáře mají podobu elektronických vyskakovacích verzí lepicích poznámek. Můžete například přidat komentář k sobě, abyste si ověřili konkrétní obrázek před tiskem listu nebo si připomněli, že určitá hodnota je pouze odhad. V ...

Jak povolit nebo odmítnout změny v sešitech aplikace Excel 2013 - figuríny

Jak povolit nebo odmítnout změny v sešitech aplikace Excel 2013 - figuríny

Při zapnutí sledování změn u sešitu aplikace Excel 2013 se můžete rozhodnout, které změny přijmout nebo odmítnout, výběrem možnosti Přijmout / Odmítnout změny z rozbalovací nabídky příkazu Změna trasování na kartě Ribbon Review (nebo stisknutím klávesy Alt + RGC). Když to provedete, aplikace Excel zkontroluje všechny zvýrazněné změny, které jste provedli ...

Výběr redakce

Jak připojit nebo odstranit objektiv z fotoaparátu Canon EOS 70D - figuríny

Jak připojit nebo odstranit objektiv z fotoaparátu Canon EOS 70D - figuríny

Fotoaparát dSLR (digitální jednooké zrcadlovky), stejně jako fotoaparát Canon EOS 70D, můžete měnit čočky tak, aby vyhovovaly různým fotografickým potřebám, a to od extrémních detailních objektivů až po velmi dlouhé teleobjektivy. Kromě toho objektiv dSLR má zaostřovací kroužek, který vám nabízí možnost zaostření ručně namísto spoléhání na ...

Nastavení úhlu a rychlosti závěrky na modelu Canon EOS 70D - dummies

Nastavení úhlu a rychlosti závěrky na modelu Canon EOS 70D - dummies

Můžete nastavte clonu a rychlost závěrky pouze v pokročilých expozičních režimech fotoaparátu Canon EOS 70D. Chcete-li zobrazit aktuální nastavení expozice, stiskněte do poloviny tlačítko spouště. Následující akce se pak provádějí: expozimetr přichází do života. Je-li zapnuto automatické zaostřování, mechanismus autofokusu začne dělat svou věc. Clona ...

Výběr redakce

Digitální fotoaparát Controls - figuríny

Digitální fotoaparát Controls - figuríny

, Pokud jste právě absolvoval kompaktní fotoaparát na vaši první digitální zrcadlovkou, můžete se divit, co se používá pro každé tlačítko a ovládání fotoaparátu. Tyto informace mohou být užitečné i tehdy, pokud jste na chvíli používali digitální zrcadlovku, ale používali jste pouze automatické nastavení. Zvládnout fotoaparátu, vy ...

Digitální fotografie a expozice - figuríny

Digitální fotografie a expozice - figuríny

Prvním krokem k pochopení digitální fotografie je pochopení expozice. Svatá trojice - jak se o něm někteří fotografové odkazují - na expozici jsou rychlost závěrky, velikost clony a citlivost senzoru digitálního fotoaparátu na světlo. Chcete-li fotografovat, musíte skutečně potřebovat čtyři věci: předmět, který chcete fotografovat, ...

Digitální fotografie a ISO - figuríny

Digitální fotografie a ISO - figuríny

ISO (mezinárodní organizace pro normalizaci) senzoru fotoaparátu. Pokud fotografujete za jasného slunečného dne, máte spoustu světla. Proto můžete použít kombinaci poměrně vysoké rychlosti závěrky s poměrně malou clonou pro správné odhalení obrazu. ...