Überladen in C++

fox_2_k

Grünschnabel
Hallo,
ich wollte mal das Überladen üben. Dazu wollte ich ein Programm schreiben, dass beim Einlesen unterscheidet ob es sich um int oder double handelt. Danach soll es ausgeben, um was es sich handelt und was man eingegeben hat. Die Ausgabe klappt wenn ich die Werte vorgebe, nur das Einlesen ist mir nicht klar.

#include<iostream>
#include<math.h>
using namespace std;

int test(int x){
cout << "Int Variable lautet:";
return x;
}

double test(double x){
cout << "Double Variable lautet:";
return x;
}

int main (){


cout << test (3) << endl;
}
 
Zuletzt bearbeitet:
Der Compiler entscheidet schon selber welche Funktion benutzt wird. Du musst nur die Parameter festlegen der Rest geht von selber ;)
 
Hallo fox_2_k,


Code:
int test(int x){
           // du gibst die Variable nicht aus!
	cout << "Int Variable lautet:";
          // return gibt den Wert lediglich an die aufrufende stelle zurück!
	return x;
}
diese "Test"-Funktion macht das was du willst:
Code:
void test(int x)
{
cout << "Int Variable lautet: " << x << endl;
}

jetzt müsstest du noch deine mainfunktion anpassen!
Code:
int main (){
	
	// so wirst du damit nicht glücklich..
	cout << test (3) << endl;
}

mein Tipp: wenn du nicht bestimmen willst, von welchem typ die einzulesende variable sein soll(z.b. int = ganze zahlen bzw. double = Gleitkommazahlen) benutze cin.get().
und noch ein Tipp: Die mainfunktion endet mit "return (0);" ;)

Grüße, random.

P.S. ich hoffe mal ich habe dir nicht um zuviel denkarbeit abgenommen ;)
 
C++:
 #include<iostream>
// #include<math.h> unbenutzt. Sonst: <cmath>

const int test(const int x)
{
    std::cout << "int";
    return x;
}

const double test(const double x)
{
    std::cout << "Typ: double";
    return x;
}

int main()
{
     	std::cout << test(3) << "\n" << test(3.0) << std::endl;
}

Random-Access: Lasset lieber :p
return 0 ist nicht notwendig (vgl. Standard)
Ausgeben tut er den Rückgabewert der Funktion schon ... d.h. ...

Einlesen ... hmm das wird schwerer ;) Du kannst nen double als int einlesen! Was machbar wäre ... als String einlesen und nach . suchen....
 
Das Problem wirst du mit "Überladen" nicht hinbekommen, denn bei der "Überladung" wird zur "Compilerzeit" entschieden, ob es ein "int" oder ein "double" ist, was du aber versuchst ist in der "Laufzeit" festzustellen, ob es sich um ein "int" oder "double" handelt. Das geht mir Überladung nicht.
Um das Problem zu lösen, müsstest du die Eingabe als String einlesen und diesen dann untersuchen, und festellen ob es sich um einen "int" oder "double" handelt.
Das ist aber glaub ich garnicht was du willst, schließlich willst du das Überladen üben.
Das Überladen hat aber nur einfluss zur Compilerzeit. Es ist dafür da, das der Programmierer keine Gedanken machen muss ob er die Funktion "testDouble()" oder "testInt()" aufruft, sondern kann einfach "test()" aufrufen und weiß, das durch die Überladung, die Richtige Funktion aufgerufen wird.

mfg
Gene
 

Neue Beiträge

Zurück