Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Помогите с масивом(классы)  (Прочитано 523 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mazai_f_kedah

  • Автор темы
  • Активист
  • *
  • Сообщений: 271
  • Ни один заяцЪ не пострадал...
    • Просмотр профиля
Помогите с масивом(классы)
« : 01 Февраля 2012, 12:18:18 »
Помогите разобраться с классами :idiot2:, вобще ,имеется динамический массив целых чисел...нужно создать конструкторы по-умолч., с параметрами и копирования, еще есть куча функций с масивом(типо запись/получение элемента, вычисление максимумуи минимума - это я могу сделать, а а вот насчет конструкторов... :idiot2:, я толькоо начал тут раздуплять си, но до класов глобально еще не дошел...помогите, буду очень признателен :)

Пользователь решил продолжить мысль 01 Февраля 2012, 12:22:14:
class Array
{
private:
int *mas,n; // указатель на массив - *mas
//размерность - n
public:
Array (); //по умолчанию???
Array (int size); //параметр типа размерность
~ Array (); // деструктор??
};

Пользователь решил продолжить мысль 01 Февраля 2012, 12:26:00:
Array :: Array ()
{cout<<"Default constructor";
n=0;mas=NULL;//Тут можго не использовать??
}

Пользователь решил продолжить мысль 01 Февраля 2012, 12:28:00:
Array :: Array (int size)
{cout<<"Parameters constructor";
n=size;
mas=new int [n];
}

Пользователь решил продолжить мысль 01 Февраля 2012, 12:29:31:
Array :: ~ Array ()
{
delete [ ] mas; // освобождаем память в деструкторе
cout<<"Destructor"; }
« Последнее редактирование: 01 Февраля 2012, 12:29:31 от mazai_f_kedah »
Acer eMachines 350-21G16ikk: Intel® Atom™ N455 (1.66Ghz) && DDR2 1024 Mb && Intel® NM10 Express && Intel® GMA 3150 + Ubuntu 12.04 (i386) =

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Помогите с масивом(классы)
« Ответ #1 : 01 Февраля 2012, 15:10:30 »
В питоне есть параметры по умолчанию, в С++ все сложнее.
Переопределение конструкторов на типы параметров - без проблем, все остальное уже или требует дублирований (лишней писанины), или преодоления всяких заморочек.

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Помогите с масивом(классы)
« Ответ #2 : 01 Февраля 2012, 15:26:57 »
Конструктор используется для того, чтобы задать внутренние переменные, например.
Деструктор должен убить всю неиспользуемую память, когда вы вызываете "delete *pointer".
Например:

Код: (C++) [Выделить]
#include <iostream>
using namespace std;

class MyClass {
private:
int a, b, c;

public:
MyClass() { a = 0; b = 0; c = 0; } // без параметров

MyClass(int d) { a = d; b=0; c=0; } // 1 параметр

MyClass(int d) { a = d; b=0; c=0; } // 1 параметр
MyClass(int d, int f) { a = d; b=f; c=0; } // 2 параметра

MyClass(int d, int f, int e) { a = d; b=f; c=e; } // 3 параметра 
void get_data() { cout << a << " " << b << " " << c << endl; } // метод класса MyClass
};

int main() {
MyClass a;

MyClass b(1);

MyClass c(1, 2);

MyClass d(1, 2, 3);


a.get_data();  // вернёт 0 0 0

b.get_data();  // вернёт 1 0 0
 c.get_data();  // вернёт 1 2 0

d.get_data();  // вернёт 1 2 3
return 0;
}

**Код "от балды", может и не работать, но принцип, думаю, понятен.
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

 

Страница сгенерирована за 0.05 секунд. Запросов: 26.