Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Работа с классом


Автор: stat007 11.10.2009, 21:48
Почему данная программа выдаёт какоето очень большое число, вместо правильного ответа???

Код

#include "stdafx.h"
#include<iostream>
using namespace std;
int ds=0;
class D
{
    int a,b,c;
public:
    D(int x, int y, int z);
    D(){}
    ~D(){}
    void Disc();
};
D::D(int x, int y, int z)
{
    x=a;
    y=b;
    z=c;
}
void D::Disc()
{    
    ds=a+b+c;
    cout<<ds<<endl;
}

int main()
{
    int s,g,h;
    cin>>s>>g>>h;
    D fun;
    fun.Disc();
    system("pause");
    return 0;
}

Автор: ИванМ 11.10.2009, 21:54
потому что членам a,b,c не присвоено значение и оно соответственно случайное
надо правильно определить конструктор
вместо
Код

D::D(int x, int y, int z)
{
    x=a;
    y=b;
    z=c;
}

надо
Код

D::D(int x, int y, int z)
{
    a=x;
    b=y;
    c=z;
}



и в main вызывать его, а не конструктор по умолчанию

Автор: stat007 11.10.2009, 22:01
ИванМ, Поменял в констректоре, но не помогло! И в main ведь этот конструктор не вызывается вообще! А вызывается функция Disc !!!!

Автор: ИванМ 11.10.2009, 22:04
Код

#include "stdafx.h"
#include<iostream>
using namespace std;
class D
{
    int a,b,c;
public:
    D(int x, int y, int z);
    void Disc();
};
D::D(int x, int y, int z)
{
    a=x;
    b=y;
    c=z;
}
void D::Disc()
{    
    int ds=a+b+c;
    cout<<ds<<endl;
}

int main()
{
    int a=10, b=10, c=10;
    D fun(a,b,c); //конструктор
    fun.Disc(); //метод Disc - выводит 30 = a+b+c
    system("pause");
    return 0;
}

Автор: stat007 11.10.2009, 22:08
ИванМ, а... теперь понятно как надо......... спс smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)