Constructor

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++

Constructor

Mesajde stelian_2681 » 19 Mai 2016, 21:07

Va salut!

Am urmatorul cod:

Cod: Selectaţi tot
#include <iostream>
using namespace std;

class Point
{
private:
    int x, y;
public:
    Point(const Point &p)
    {
        x = p.x;
        y = p.y;
    }
    int getX()
    {
        return x;
    }
    int getY()
    {
        return y;
    }
};

int main()
{
    Point p1;
    Point p2 = p1;
    cout << "x = " << p2.getX() << " y = " << p2.getY();
    return 0;
}



Imi da eroare la compilare in linia Point p1;
La aceasta linie este declarat obiectul p1 de tipul Point.
Daca programatorul nu declara un constructor compilatorul genereaza automat un constructor implicit.
De ce imi da eroare ?
stelian_2681
Junior
Junior
 
Mesaje: 25
Membru din: 24 Iun 2013, 23:25
Judet: Olt

Re: Constructor

Mesajde Viorel » 19 Mai 2016, 22:22

Cred că e mai corect a spune „daca programatorul nu declara nici un constructor, compilatorul generează un constructor implicit”.

Așadar urmează să definești și constructorul fără parametri.

În limbajul modern constructorul generat de compilator poate fi activat cu ajutorul cuvîntului default:

Cod: Selectaţi tot
class Point
{
public:
    Point() = default;
    . . .
};


Însă acesta nu va inițializa membrii x și y cu zero. Deci ar trebui să definești un constructor manual:

Cod: Selectaţi tot
class Point
{
public:
    Point() : x(0), y(0)
    {
    }
    . . .
};
Viorel
Microsoft MVP
Microsoft MVP
 
Mesaje: 278
Membru din: 13 Iul 2007, 12:26

Re: Constructor

Mesajde davidush » 07 Iun 2016, 23:50

nu ai constructorul implicit defineste-l in clasa si iti va rula :) daca vrei poti face si set la x si y pentru a pune ce valoare vrei tu
davidush
Junior
Junior
 
Mesaje: 7
Membru din: 12 Ian 2016, 23:32
Judet: Iaşi


Înapoi la Limbajul C++

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 2 vizitatori

cron