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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2014, 20:48   #1
doss
Пользователь
 
Регистрация: 05.03.2013
Сообщений: 41
По умолчанию Конструктор без параметров

В каком случае можно не описывать конструктор без параметров и почему?

Один из вариантов, когда компилятор создает его сам. Т.е. программисту не нужно инициализировать сво-ва класса и/или выделить память, то он не указывает его, а компилятор автоматически создает "пустой" конструктор, который не только не имеет аргументов, но и сам конструктор ничего не выполняет.

Последний раз редактировалось doss; 10.10.2014 в 20:52.
doss вне форума Ответить с цитированием
Старый 10.10.2014, 23:37   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Вы правильно написали. Вот здесь почитайте для закрепления Какие функции C++ создает и вызывает молча

Конструктор с параметрами для удобства программиста, как и всё в C++

Например, если написать конструктор с параметрами, то не нужно писать дополнительные строки с сеттерами:
Код:
    std::vector<Point> points;
    for( int i = 0; i < 10; i++ ) {
        points.push_back( Point( i, i ) );
    }
Можно написать конструктор без параметров, тогда компилятор не будет создвать конструктор поумолчанию. В конструкторе без параметров, тоже можно и память выделить и инициализировать переменные

Последний раз редактировалось 8Observer8; 11.10.2014 в 00:36.
8Observer8 вне форума Ответить с цитированием
Старый 11.10.2014, 07:21   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Можно написать конструктор без параметров, тогда компилятор не будет создвать конструктор поумолчанию.
Можно написать любой конструктор, тогда компилятор не будет создавать по умолчанию.
p51x вне форума Ответить с цитированием
Старый 11.10.2014, 07:52   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Спасибо, что поправили!
8Observer8 вне форума Ответить с цитированием
Старый 11.10.2014, 09:53   #5
doss
Пользователь
 
Регистрация: 05.03.2013
Сообщений: 41
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Спасибо, что поправили!
Код:
#include <iostream>

class Fool{
	int in;
	float fl;
	double db;
	char *ch;
public:
	void getint(){
		std::cout << in << " " << fl << " " << db;
		std::cout << std::endl;
		std::cout << ch << std::endl;
	}
};
void main()
{
	Fool f1;
	f1.getint();
}
выдает не 0, а -865... как подкорректировать код, что бы глянуть работу компилятора, который создает класс и присваивает ему значения?

Последний раз редактировалось Stilet; 11.10.2014 в 12:29.
doss вне форума Ответить с цитированием
Старый 11.10.2014, 12:31   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Допиши
Код:
 Fool(){in=0; fl:=0.0; db:=0.0;}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.10.2014, 14:59   #7
doss
Пользователь
 
Регистрация: 05.03.2013
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Допиши
Код:
 Fool(){in=0; fl:=0.0; db:=0.0;}
спасибо!

Вот к последний вопрос: Что делает конструктор по умолчанию?
doss вне форума Ответить с цитированием
Старый 11.10.2014, 15:24   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что делает конструктор по умолчанию?
Создает объект )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.10.2014, 15:29   #9
doss
Пользователь
 
Регистрация: 05.03.2013
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Создает объект )
А что происходит с атрибутами и тд?)
doss вне форума Ответить с цитированием
Старый 11.10.2014, 16:11   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С полями? Им задается в памяти место. А точнее в куче. Т.е. поля класса получают указатели на свободную память.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка объявления функции без параметров на С++ или С Денис6954 Фриланс 1 28.09.2014 12:28
Изменение параметров конструктора без аргументов megadude000 Помощь студентам 0 20.04.2012 12:23
explicit конструктор без аргументов _-Re@l-_ Общие вопросы C/C++ 0 20.12.2011 20:29
процедуры без параметров Luckyman Помощь студентам 0 06.06.2011 16:05
Помогите сделать Процедуру без параметров FreeZZZ Паскаль, Turbo Pascal, PascalABC.NET 1 26.12.2008 15:04