Форум программистов, компьютерный форум CyberForum.ru

Как создавать массивы объектов, и как к ним обращаться? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблема с перегрузкой операторов '-' >> << и с конструктором без параметров http://www.cyberforum.ru/cpp-beginners/thread11113.html
Помогите пожалуйста, проблема с перегрузкой операторов '-' >> <<, возможно еще с конструктором без параметров наверно проблема #pragma once #include <iostream> #include <string> #include <fstream> using namespace std; class Line { private:
C++ Как запретить компилятору неявное преобразование из числового типа в символьный? У мя возникла такая проблема: я ввожу данные типа char и мне надо быть уверенным, что я ввел именно символ, т.е. если я ввожу число мне нужно об этом как-то узнать...это было бы легко сделать, если запретить компилятору преобразовывать из числового типа в символьный. Это реально сделать и как? Спасибо. http://www.cyberforum.ru/cpp-beginners/thread11094.html
Считывание данных из файла C++
у меня такая проблема: считываю данные из файла открытого fopen для чтения, символы записываются в символьный массив, как только считывание доходит до символа 'стрелочка вправо', если я не ошибаюсь 26 символ таблицы ASCII, дальнейшее считывание прекращается подскажите пожалуйста как это можно обойти, если этот символ не будет считан в массив это ничего страшного! заранее спасибо!!!
Вопрос по поводу переворота строки и перегрузки << и >> C++
помогите пожалуйста с моими ошибками. Задание создать ф-цию переворота строки и переопределение >> и << #pragma once #include <iostream> #include <string> using namespace std; class Line { private:
C++ Создание каркаса программы из namespace`ов и сигнатур http://www.cyberforum.ru/cpp-beginners/thread11015.html
Всем привет. Возникла следующая проблема :) Вернулся с Java на C++. Расстроился. Раздражает то, что надо делить реализацию от сигнатуры. Так и подмывает построить нечто вроде коркаса из namspace`ов и сигнатур. Пример: framework.h - Каркас namespace test { namespace test_1 { class test_1_class_1 { private: viod test_func();
C++ Перевести код из С++ в Си Есть код на С++, надо чистый С. Пыталась исправлять ошибки, но чем больше я это делаю, тем больше ошибок он выдает...поэтому привожу изначальный не исправленный на С++. Пожалуйста, помогите разобраться! #include <algorithm> #include <cmath> #include <iostream> #include <map> #include <vector> using namespace std; подробнее

Показать сообщение отдельно
Beliy_shum
1 / 1 / 0
Регистрация: 10.08.2008
Сообщений: 65

Как создавать массивы объектов, и как к ним обращаться? - C++

10.08.2008, 22:12. Просмотров 2819. Ответов 11
Метки (Все метки)

как создавать массивы объектов и как к ним обращаться?

вот что пишет создатель самого си в своей книге -
5.5.5 Массивы объектов класса
Чтобы можно было описать массив объектов класса с конструктором, этот класс должен иметь стандартный конструктор, т.е. конструктор, вызываемый без параметров. Например, в соответствии с определением
C++
1
 table tbl[10];
будет создан массив из 10 таблиц, каждая из которых инициализируется вызовом table::table(15), поскольку вызов table::table() будет происходить с фактическим параметром 15.
В описании массива объектов не предусмотрено возможности указать параметры для конструктора. Если члены массива обязательно надо инициализировать разными значениями, то начинаются трюки с глобальными или статическими членами. Когда уничтожается массив, деструктор должен вызываться для каждого элемента массива. Для массивов, которые размещаются не с помощью new, это делается неявно. Однако для размещенных в свободной памяти массивов неявно вызывать деструктор нельзя, поскольку транслятор не отличит указатель на отдельный объект массива от указателя на начало массива, например:
C++
1
2
3
4
5
6
7
8
void f()
{
 table* t1 = new table;
 table* t2 = new table[10];
 delete t1; // удаляется одна таблица
 delete t2; // неприятность:
 // на самом деле удаляется 10 таблиц
}
В данном случае программист должен указать, что t2 - указатель на массив:
C++
1
2
3
4
5
6
7
void g(int sz)
{
 table* t1 = new table;
 table* t2 = new table[sz];
 delete t1;
 delete[] t2;
}
Функция размещения хранит число элементов для каждого размещаемого массива. Требование использовать для удаления массивов только операцию delete[] освобождает функцию размещения от обязанности хранить счетчики
числа элементов для каждого массива. Исполнение такой обязанности в реализациях С++ вызывало бы существенные потери времени и памяти и нарушило совместимость с С.
получается что нельзя создавать массивы объектов если в классе не стандартный деструктор!!!!
а как обращаться к созданным объектам в массиве? мне не понятно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru