Vad är operatörens överbelastning?

Operatörsöverbelastning är en datorprogrammeringsspråkfunktion som gör att en programmerare kan åsidosätta en standardoperatör. När operatörsfunktionen är överbelastad kan den förklaras med anpassade argument som är olika datatyper än vad operatören kunde hantera som standard. De nya parametrarna kan vara primitiva eller användardefinierade typer. Inom kroppen av den åsidosatta funktionen kan en programmerare manipulera parametervärden efter önskemål. Genom att använda operatörens överbelastning kan en programmerare skapa intuitiva genvägar för att manipulera användardefinierade datatyper eller ändra hur standarddatatyper hanteras.

När användardefinierade datatyper skapas finns det inget sätt att utföra enkla operativa uppgifter, till exempel att lägga till två av dem tillsammans eller öka interna data genom att använda den unära inkrementoperatören med datatypen. Operatörer, inklusive tilläggssymbolen, kan åsidosättas så att om de används som binära operatörer mellan två anpassade datatyper returnerar de ett användardefinierat resultat. På samma sätt kan en unär operatör, som inkrementeringsoperatören, åsidosättas för att öka ett internt värde inom den användardefinierade typen.

När en operatör är överbelastad måste kompilatorn fatta ett beslut om vad man ska göra när den möter en överbelastad operatör. Kompilatorn bestämmer den rätta åtgärden att vidta baserat på vilka datatyper som används som operander, eller tillsammans med operatören. Om operanderna, som är parametervärden för operatörsfunktionen, är användardefinierade datatyper, kommer kompilatorn att välja den överbelastade funktionen som har parametrar som matchar de operander som används.

Datorspråk varierar i hur de tillåter denna typ av ad hoc-polymorfism. Olika språk kan tillåta skapande av nya anpassade operatörer, överbelastning av alla eller några av dess operatörer, eller kanske inte tillåter överbelastning av operatörer alls. C ++, C #, PHP och Perl tillåter alla att några av deras operatörer överbelastas. Operatörens överbelastning är inte tillåten i C, Java och Javascript.

Både överbelastning av operatörer och överbelastning av funktioner i allmänhet har varit föremål för en viss debatt. Vissa hävdar att att ge programmeraren frihet att ändra hur en operatör agerar kan införa potentialen att skapa oavsiktliga fel av andra programmerare som använder den anpassade koden. Den motsatta synpunkten föreslår att tillåter operatörens överbelastning ger programmerare förmågan att skapa intuitiv och kortfattad kod som blir lättare att förstå, kosta mindre att producera och minska fel.

ANDRA SPRÅK

Hjälpte den här artikeln dig? Tack för feedbacken Tack för feedbacken

Hur kan vi hjälpa? Hur kan vi hjälpa?