Форум программистов, компьютерный форум, киберфорум
Наши страницы

Основы: указатель на объект или объект, что выбрать? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает strlen http://www.cyberforum.ru/cpp-beginners/thread1553547.html
сабж не могу взять длину строки функция определения возвращает не понятные значения #include <stdlib.h> #include <stdio.h> #include <string.h> #include <locale.h> int main(void) {
C++ Массив: Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных... http://www.cyberforum.ru/cpp-beginners/thread1553544.html
C++ Двусвязный список. Добавление элемета в начало
В чем проблема и почему начальный элемент "не закрепляется"? #include <iostream> #include "ListFunctions.h" using namespace std; struct ElementOfList { int value;
Thread разбить программу в несколько потоков mutex, разбить класс на несколько потоков C++
Всем привет! Помогите пожалуйста разделить мою программу на несколько потоков, вроде используют mutex, но я не знаю как его использовать.:help: а вот и сам код: #include "stdafx.h" #include...
C++ Определить, равен ли квадрат числа учетверенной сумме кубов его цифр http://www.cyberforum.ru/cpp-beginners/thread1553508.html
Дано двузначное число. Определить, равен ли квадрат этого числа учетверенной сумме кубов его цифр. Например, для числа 48 ответ положительный, для числа 52 — отрицательный.
C++ Если массив заканчивается нулѐм, выдать соответствующее сообщение Если массив заканчивается нулѐм, выдать соответствующее сообщение. подробнее

Показать сообщение отдельно
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,867
Записей в блоге: 1
Завершенные тесты: 5
16.10.2015, 09:54
Sillent Div, когда до наследования и виртуальных методов доберешься, тогда узнаешь один из важных аспектов использования указателей на объект, вместо объекта. Например,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <cmath>
#include <string>
 
class Shape
{
    public:
        virtual double square() const = 0;
        virtual std::string type() const = 0;
};
 
class Triangle : public Shape
{
    private:
        double a_, b_, c_;
    public:
        Triangle(double a=0, double b=0, double c=0) : a_(a), b_(b), c_(c) {}
 
        double square() const
        {
            double p = (a_ + b_ + c_) / 2;
            return sqrt(p * (p - a_) * (p - b_) * (p - c_));
        }
        
        std::string type() const
        {
            return std::string("Triangle");
        }
};
 
class Rectangle : public Shape
{
    private:
        double width_, height_;
    public:
        Rectangle(double width=0, double height=0) : width_(width), height_(height) {}
 
        double square() const
        {
             return width_ * height_;
        }
 
        std::string type() const
       {
            return std::string("Rectangle");
       }
};
 
int main()
{
    Shape *array[4]; // теперь в массив можно складывать и Triangle и Rectangle
    array[0] = new Triangle(3, 4, 5);
    array[1] = new Rectangle(4, 5);
    array[2] = new Rectangle(8, 6);
    array[3] = new Triangle(5, 4, 8);
 
    for (int i = 0; i < 4; ++i)
    {
        std::cout << array[i]->type() << ": square = " << array[i]->square() << std::endl;
        delete array[i];
    }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.