Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конструктор и деструктор, Реализовать их для данного класса 
:(
    Опции темы
Voldemar2004
Дата 21.10.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



У меня такой вопрос, как правильно реализовать конструктор и деструктор для класса, один из методов которого считывает из файла в массив числа.

Код
/*
Array.h
Интерфейс класса.
*/

#include <iostream>
#include <conio>

using namespace std;

class Array
{
        public:

        Array();

        ~Array();
    
long int LoadFromFile(char*, unsigned int Position);

        private:
        int* p, count;

};

/*
Array.cpp
Реализация класса.
*/

#include <stdio>        /* fopen() */
#include <stdlib>       /* atoi(), strtod() */

#include <fstream>
#include "Array.h"

/* Конструктор */
Array::Array(){
p = new int[count];
}

/* Деструктор */
Array::~Array(){
delete[] p;
}

long int Array::LoadFromFile(char* fName, unsigned int Index_of_Element)
{

unsigned int count = Array::StringCount(fName);

long int *array = new long int[count];

    string str;

    ifstream fin(fName);

    unsigned int i=0;

    while (!fin.eof())
    {
        getline(fin, str);
        array[i] = atoi(str.c_str());
        ++i;
    }

return array[Index_of_Element];

}


Или вот так (а то совсем запутался):
Код
#include <iostream>
#include <conio>

using namespace std;

class Array
{
        public:

        Array(int*, int);

        ~Array();
    
long int LoadFromFile(char*, unsigned int Position);

        private:
        int* p, count;

};

/* Конструктор */
Array::Array(){
p = new int[count];
}

/* Деструктор */
Array::~Array(){
delete[] p;
}

void main()
{

                int *arr = new int[5];

                for(int i=0; i<5; ++i) arr[i] = i;

                Array a(arr, 5);
return 0;
}
Мне кажется 2-ой способ более правилен, или нет?

Это сообщение отредактировал(а) Voldemar2004 - 21.10.2006, 21:20


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Daevaorn
Дата 21.10.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Voldemar2004, ни один из способов не правильный.

Код

p = new int[count];

Чему равно count?

Код

class Array
{
        public:

        Array(int*, int);

        ~Array();
    
long int LoadFromFile(char*, unsigned int Position);

        private:
int* p,count;

};

Где конструктор копирования?
Где оператор копирования?
"Воровство" указателя обеспечено

Код

int* p

А может лучше std::vector< int >? Тогда все проблемы решаются в раз.
PM MAIL WWW   Вверх
Voldemar2004
Дата 21.10.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Цитата(Daevaorn @  21.10.2006,  22:31 Найти цитируемый пост)
А может лучше std::vector< int >?
Да, совсем забыл. smile Хотя второй способ я взял из книги Павловской, хотелось без 
Код
std::vector< int >
.



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.