• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konstruktor i destruktor

0 głosów
49 wizyt
pytanie zadane 13 grudnia 2016 w C i C++ przez klap Początkujący (340 p.)
edycja 13 grudnia 2016 przez klap

Cześć, potrzebujemy Waszej porady. Z konstruktorami i destruktorami mamy styczność pierwszy raz i czy moglibyście powiedzić czy poprawnie ich użyliśmy?

Prosty program ma dodawać lub mnożyć jak sobie zażyczymy. Są cztery funkcje (użyliśmy void).

argum.cpp

#include "argum.h"
#include <iostream>

using namespace std;
argum::argum()
{
 
    pierwszy_arg=a;
    drugi_arg=b;
}


void argum::wywolaj()
{
    cout<< "Podaj a : "; cin>>a;
    cout<<"Podaj b : "; cin>>b;
}

void argum::dodaj()
{
    c=a+b;
    cout<<"Wynik dodawania : "<<c;
}

void argum::mnozenie()
{
    c=a*b;
    cout<<"Wynik mnozenia : "<<c;
}

// argum::wynik(int obiekt)
//{
  //  cout<<"Podaj jaki wynik chcesz uzyskac, mnozenie (1), dodawanie (0) : "; cin>>obiekt;
//}

argum::~argum()
{
    cout<<endl;
}

 

argum.h

#ifndef ARGUM_H
#define ARGUM_H
#include <iostream>

using namespace std;

class argum
{
    public:
         argum();
        ~argum();
        void wywolaj();
       // void wynik(int obiekt);
        void dodaj();
        void mnozenie();
        int c,a,b;

    private:
        int pierwszy_arg;
        int drugi_arg;
};

#endif // ARGUM_H

 

main

#include <iostream>
#include "argum.h"

using namespace std;

int main()
{
    argum a1;
    a1.wywolaj();

    int obiekt;
    cout<<"Podaj mnozenie 1 dodawanie 0: "; cin>>obiekt;

    if (obiekt==0)
    {
        a1.dodaj();
    }
    if (obiekt==1)
    {
        a1.mnozenie();
    }
    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 13 grudnia 2016 przez Sinnley Stary wyjadacz (12,050 p.)
Trzeci kod wrzuć do bloku i zmień nazwy tych zmiennych. Nie da się czytać kodu, w których zmienne są nazywane "aa" "a" "bb" "abcd" itp.
komentarz 13 grudnia 2016 przez klap Początkujący (340 p.)
Zmienione.
komentarz 14 grudnia 2016 przez Sinnley Stary wyjadacz (12,050 p.)

Chyba najlepiej pozbyć się funkcji wywołaj z obiektu, zrobić ją jako oddzielną, destruktora również się pozbyć skoro przechodzi tylko do nowej lini, no i wyrzucić zmienne a,b,c.

Metody niech zwracają inta, a wyniki wywołuj w mainie, np tak:

#include <iostream>

using namespace std;


class Argum
{
public:

	Argum(int, int);
	int dodaj();
	int mnozenie();

private:
	int pierwszy_arg;
	int drugi_arg;
};

void wywolaj(int&a, int&b)
{
	cout << "Podaj a: ";
	cin >> a;
	cout << "Podaj b: ";
	cin >> b;
}

int main() {

	int pierwszyArgument, drugiArgument;
	
	wywolaj(pierwszyArgument, drugiArgument);

	Argum obj(pierwszyArgument,drugiArgument);

	cout << "Wynik mnozenia to: " << obj.mnozenie() << "a dodawania: " << obj.dodaj();
	cin.get();
	return 0;
}
Argum::Argum(int a, int b) {

	pierwszy_arg = a;
	drugi_arg = b;
}
int Argum::dodaj() {
	return pierwszy_arg + drugi_arg;
}
int Argum::mnozenie() {
	return pierwszy_arg * drugi_arg;
}

Jeśli chcesz rozbić na kilka plików - śmiało.

0 głosów
odpowiedź 13 grudnia 2016 przez Dominik Kulis Użytkownik (640 p.)
Przy tworzeniu kontruktorw zalecam pisać w taki sposób

argum::argum(int a, int b)

: aa(a), bb(b)

{

}

a obiekt tworzysz:
argum a1(wartosc1, wartosc2);

 

W twoim programie nie potrzebnie tworzysz tyle zmiennych
komentarz 13 grudnia 2016 przez klap Początkujący (340 p.)
Wiem, to jest zadanie i jest nakazane tyle tworzyć. Przyznam szczerze że mam problem z tym jak wpisze argum a1(a,b); to później nie wiem jak wczytaj np void dodaj(); bo jako a1.dodaj() juz go nie wczytam

Podobne pytania

0 głosów
1 odpowiedź 95 wizyt
–4 głosów
0 odpowiedzi 74 wizyt
0 głosów
1 odpowiedź 89 wizyt

39,635 zapytań

77,997 odpowiedzi

153,248 komentarzy

18,692 pasjonatów

Przeglądających: 281
Pasjonatów: 22 Gości: 259

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...