---
title: "Överlagring av ="
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/28128-överlagring-av"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Reza"
published: "2001-11-11T02:57:00.000Z"
updated: "2001-11-22T07:26:00.000Z"
replies: 8
views: 474
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/28128-överlagring-av"
---

# Överlagring av =

## #1 — Reza, 2001-11-11T02:57Z

Vad är anledningen till att den överlagrade operatorn = inte används i samband med att den överlagrade indexerings operatorn används ?

class Counter
{
public: 
	Counter();
	Counter(int antal);

	int& operator\[\](int ant);
        Counter& operator=(Counter& rhs) { return \*this }
private:
	int \*itsVal;
};

Counter::Counter()
{
	itsVal = new int\[1\];
}

Counter::Counter(int antal)
{
	itsVal = new int\[antal\];
}

int& Counter::operator\[\](int ant)
{
	return itsVal\[ant\];
}

int main()
{
	Counter i(3);
	Counter j(3);

	i\[0\] = 100;
	j\[0\] = 200;

	i\[0\] = j\[0\]; // Anropar inte den överlagrade =
}

Permalänk: https://www.webforum.nu/p/28128

## #2 — UlfT, 2001-11-11T17:40Z

Jag ser inte ens att du har överlagrat =. Hittar i alla fall ingen operator=()-funktion.

Permalänk: https://www.webforum.nu/p/401358

## #3 — Reza, 2001-11-11T17:49Z

Jag ber om ursäkt, jag hade glömt att placera ut deklarationen av överlagringen =.

Permalänk: https://www.webforum.nu/p/401359

## #4 — Beatbox, 2001-11-11T17:52Z

Precis vad jag satt och tänkte på också. Sedan är det ju skilland på dessa operatorer också. Ena fallet vill man göra nått speciellt vid indexering och den andra är ju tilldelning.

> i\[0\] = 100;

Detta hade ju också resulterat i att tilldelingsoperatorn anropats om den fanns överlagrad i klassen.

// BeatBox

Permalänk: https://www.webforum.nu/p/401360

## #5 — Reza, 2001-11-11T19:42Z

Tilldelnings operatorn finns överlagrat i klassen, men anropas inte, verken med:
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
i\[0\] = 100;
 
eller 
\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
i\[0\] = j\[0\];

Permalänk: https://www.webforum.nu/p/401361

## #6 — netfeed, 2001-11-11T20:12Z

int main()
{
    return 0;
}

lol ;)

Permalänk: https://www.webforum.nu/p/401362

## #7 — UlfT, 2001-11-11T20:37Z

Något som jag funderar på är att operator\[\] returnerar en referens till en int. Men det är ju en Counter som har operator=. Alltså, först anropar du operator\[\]. Då får du en int. Och int har ju ingen överlagrad =. Därför anropas inte operator=. Hade operator\[\] returnerat en Counter kanske det hade funkat.

Permalänk: https://www.webforum.nu/p/401363

## #8 — Reza, 2001-11-11T22:22Z

UlfT du har nog helt rätt.
Tack för hjälpen.

Permalänk: https://www.webforum.nu/p/401364

## #9 — JimmyPalm, 2001-11-22T07:26Z

Vad du verkar vara en JÄTTEdålig programmerare du REZA!!! ;)

Permalänk: https://www.webforum.nu/p/401365

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/28128-överlagring-av
