Klassen, Vererbung

callas

Grünschnabel
Hallo,
ich habe gerade mit dem Thema Klassen und mit Vererbung angefangen und habe mir jetzt mal eine mini-Klasse gebaut.
jetzt weiß ich nur nicht wie ich dann mit den SetAge() und GetAge() Funktionen was anfangen kann.
also wie kann ich den Variablen im 'int main()' Werte verpassen z.B. durch Benutzereingaben .. oder halt auch einfach selber.. und wie kann ich das alles ausgeben...
ich freue mich, wenn mir jmd ein paar möglichkeitengeben kann

Code:
 #include <iostream>


class Base
{
public:
		Base(): a(0), b(0) { } 
		Base(int a, int b);
		void SetAge(int newAge) { a = newAge; } 
		int GetAge() { return a; }
		virtual ~Base() { } 
private:
		int a;
		int b;
};


class abc : public Base
{
public:
		abc() : Base(), c() { } 
		abc(int a, int b, int c_)
		: Base(a, b), c(c_) { }
		
		virtual ~abc() { }
private:
		int c;
};


int main()
{
	Base base;
	abc abc;
	
	base.SetAge(4);
	std::cout <<  << "\n";
	return 0;
}
 
Upsa ;) Das geht anders :D

C++:
class base
{
public:
    base(const int data = 0)
        : m_data(data)
    { } 
    virtual ~base() { } 

public:
    void set_data(const int data) { m_data = data; } 
    const int get_data() const { return m_data; }
    
public:
    virtual std::ostream& class_type(std::ostream& out) const { out << "base:" << std::endl; }

private:
    int m_data;
};

class derived : public base
{
public:
    derived(const int data = 0, const unsigned int custom = 0) 
        : base(data), m_custom(custom) 
    { } 

public:
    std::ostream& class_type(std::ostream& out) const { out << "derived:" << std::endl; }

private:
    unsigned int m_custom;
};

#include <iostream>

int main()
{
    base* ptr_derived = new derived(-10, 10);
    base* ptr_base = new base(-9);

    ptr_derived->class_type(std::cout) << ptr_derived->get_data() << std::endl;
    ptr_base->class_type(std::cout) << ptr_base->get_data() << std::endl;

    delete ptr_derived;
    delete ptr_base;
}
 
danke erstmal!
jetzt frag ich mich, wofür braucht man diese set_data() funktion
wenn ich diese nämlich auskommentiere, dann macht das programm das selbe wie vorher. außerdem rufst du die ja auch nirgendwo auf.
und eigentl ist es doch auch überflüssig in den beiden klassen jeweils immer 2 mal 'public:'
zu öffnen oder ?
also du bist ja eh schon im public bereich.. !!?
und ist es nötig immer mit pointern auf die klassen bzw funktionen zuzugreifen um eine ausgabe zu machen ?
also ich habe es gestern auch auf anderem wege geschafft, aber vll war dieser weg ja auch sehr umständlich....
 
get_data zeigt nur, das du bei er abgeleiteten Klasse auch die FUnktionen der Basisklasse aufrufen kannst. Ja, du musst das Objekt auf dem Heap anlegen ...
Und die beiden public ... vllt. erkennst du das System, wie ich die FUnktionen anordne. Es ist reine Optik ;)

Und doch ich rufe die Funktion auf :D
 
Zurück