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

Konstruktor i destruktor

Object Storage Arubacloud
0 głosów
233 wizyt
pytanie zadane 13 grudnia 2016 w C i C++ przez klap Początkujący (410 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,810 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 (410 p.)
Zmienione.
komentarz 14 grudnia 2016 przez Sinnley Stary wyjadacz (12,810 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 (720 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 (410 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ź 724 wizyt
–4 głosów
0 odpowiedzi 440 wizyt
pytanie zadane 17 października 2017 w C i C++ przez p1erut Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 224 wizyt
pytanie zadane 14 sierpnia 2020 w C i C++ przez lujasjeden Użytkownik (860 p.)

92,535 zapytań

141,376 odpowiedzi

319,449 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...