Constructor

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
stelian_2681
Junior
Junior
Posts: 36
Joined: 24 Jun 2013, 23:25
Judet: Olt

Constructor

Post by stelian_2681 » 19 May 2016, 21:07

Va salut!

Am urmatorul cod:

Code: Select all

#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 ?



Viorel
Microsoft MVP
Microsoft MVP
Posts: 286
Joined: 13 Jul 2007, 12:26

Re: Constructor

Post by Viorel » 19 May 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:

Code: Select all

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:

Code: Select all

class Point
{
public:
    Point() : x(0), y(0) 
    {
    }
    . . .
};

davidush
Junior
Junior
Posts: 7
Joined: 12 Jan 2016, 23:32
Judet: Iaşi

Re: Constructor

Post by davidush » 07 Jun 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

Post Reply