Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2013, 19:41   #31
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

то есть в первом случае будет радиус 0,а во втором 10?
fkty вне форума Ответить с цитированием
Старый 28.09.2013, 19:48   #32
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Да. В следующем коде я заменил вот это кусок:

Код:
Circle(int r) {
    radius = r;
}
на этот

Код:
    Circle(int r = 0) : radius(r) {
}
Они эквивалентны.

Код:
#include <iostream>
using namespace std;

class Circle {
public:
    Circle(int r = 0) : radius(r) {
    }
    
    double getRadius() {
        return radius;
    }
    
private:
    double radius;
};

int main() {
    Circle a_circle;
    cout << a_circle.getRadius() << endl;

    Circle b_circle(10);
    cout << b_circle.getRadius() << endl;

    return 0;
}
8Observer8 вне форума Ответить с цитированием
Старый 28.09.2013, 19:50   #33
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

так,поняла
fkty вне форума Ответить с цитированием
Старый 28.09.2013, 19:55   #34
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Непонятная строчка выглядела вот так:

Цитата:
Сообщение от fkty Посмотреть сообщение
Circle(int r = 0) : radius(r) {
area = calcArea();
Вот эту строчку:

Код:
area = calcArea();
я поясню позже. Сегодня уже не смогу. Давайте до завтра
8Observer8 вне форума Ответить с цитированием
Старый 29.09.2013, 10:06   #35
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Давайте ещё раз эту запись разберём:

Код:
Circle(int r = 0) : radius(r) {
}

private:
    double radius;
Сначала вот этот момент:
Код:
radius(r)
radius - это скрытая переменная класса. Так мы инициализируем переменную - radius(r)

Сравните между собой два следующих класса. Они абсолютно одинаковы. Просто во втором случае код написан более компактно, то есть занимает меньше строк кода.

Первый вариант (здесь больше строк кода):

Код:
#include <iostream>
using namespace std;

class Circle {
public:
    Circle() {
        radius = 0;
    }

    Circle(int r){
        radius = r;
    }

    double getRadius() {
        return radius;
    }
    
private:
    double radius;
};

int main() {
    Circle a_circle;
    cout << a_circle.getRadius() << endl;

    Circle b_circle(10);
    cout << b_circle.getRadius() << endl;

    return 0;
}
Второй вариант (он более компактный, но делает тоже самое, что и первый вариант):

Код:
#include <iostream>
using namespace std;

class Circle {
public:
    Circle(int r = 0) : radius(r) {
    }

    double getRadius() {
        return radius;
    }
    
private:
    double radius;
};

int main() {
    Circle a_circle;
    cout << a_circle.getRadius() << endl;

    Circle b_circle(10);
    cout << b_circle.getRadius() << endl;

    return 0;
}
Примечание. Сравнивать нужно вот эти два кусочка:
Код:
    Circle() {
        radius = 0;
    }

    Circle(int r){
        radius = r;
    }
Код:
    Circle(int r = 0) : radius(r) {
    }
P.S. Поехали дальше? Здесь есть непонятные строки кода? Если нет, то я Вам общую идею своего кода поясню.

Последний раз редактировалось 8Observer8; 29.09.2013 в 10:12.
8Observer8 вне форума Ответить с цитированием
Старый 29.09.2013, 16:11   #36
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

8Observer8,понятно
fkty вне форума Ответить с цитированием
Старый 29.09.2013, 16:19   #37
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Я Вам много сразу писать не буду. Лучше постепенно разбираться.

В следующем коде всё понятно? Мы расчитываем прощадь при создании объекта.

Код:
#include <iostream>
#include <cmath>
using namespace std;

class Circle {
public:
    Circle(int r = 0) : radius(r) {
        calcArea();
    }

    double getArea() {
        return area;
    }
    
private:
    double radius;
    double area;
    void calcArea() {
        area = M_PI * radius * radius;
    }
};

int main() {
    Circle a_circle;
    cout << a_circle.getArea() << endl;

    Circle b_circle(10);
    cout << b_circle.getArea() << endl;

    return 0;
}
8Observer8 вне форума Ответить с цитированием
Старый 29.09.2013, 16:22   #38
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

8Observer8,да понятно
fkty вне форума Ответить с цитированием
Старый 29.09.2013, 16:23   #39
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Покажите строку из главного кода. Дальше будем разбирать.
8Observer8 вне форума Ответить с цитированием
Старый 29.09.2013, 16:24   #40
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

this->radius = radius;
fkty вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
Движение объектов используя классы ryashya Паскаль, Turbo Pascal, PascalABC.NET 0 29.09.2011 00:07
Классы, объекты,поля объектов Mr_skiner Общие вопросы Delphi 9 10.03.2011 23:07
Чем отличаются классы от объектов в Delphi? JY_ Помощь студентам 1 25.01.2009 18:57