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

Konstruktor i destruktor

VPS Starter Arubacloud
0 głosów
232 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ź 719 wizyt
–4 głosów
0 odpowiedzi 439 wizyt
pytanie zadane 17 października 2017 w C i C++ przez p1erut Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 223 wizyt
pytanie zadane 14 sierpnia 2020 w C i C++ przez lujasjeden Użytkownik (860 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...