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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.82
necheyhin_a_v
3 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 60
#1

Конструктор без параметров - C++

18.12.2012, 21:28. Просмотров 4312. Ответов 9
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
class stack
{
private:
  int top;   // вершина стека
  int s[10]; // массив в котором хранится стек
 
public:
  stack (): top(0) // конструктор без параметров
  {}
Для чего в конструкторе без параметров :top(0)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 21:28     Конструктор без параметров
Посмотрите здесь:

Конструктор без параметров: не выводится строка в приведенном коде - C++
#include "stdafx.h" #include "conio.h" #include <iostream> using namespace::std; class String { protected: enum { SZ = 80 };...

Как вызвать конструктор с параметрами в конструкторе без параметров? - C++
Как вызвать конструктор с параметрами в конструкторе без параметров? То есть что бы конструктор с параметрами выступал в роли основного. В...

Конструктор с переменным числом параметров - C++
Привет Всем! интересует вопрос возможно ли описать Конструктор с переменным числом параметров? То есть возможен ли следующий код: ...

Конструктор с одним параметром и с переменным числом параметров - C++
пишу обычный класс, обычная лаба, где несколько конструкторов.применять одновременно в условии не сказано, но я решил помучатся и узнать...

передача параметров в конструктор при создании динамического массива - C++
Добрый день! Есть довольно тривиальный класс: class Array1d{ int* ptr_; public: Array1d(int n): ptr_(new...

Пустой конструктор без аргументов - C++
Всем доброго времени суток. Я сейчас в процессе изучения С++, читаю книгу Лафоре "Объектно-ориентированное программирование в С++". На...

Странный конструктор копирования или функция без имени? - C++
Вы знаете, до меня вдруг что-то дошло.. А что же у нас в строке 15??? Функция имеет название, тут его собствено нет! Есть только...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
18.12.2012, 21:30     Конструктор без параметров #2
Одно и то же, что:
C++
1
2
3
4
stack () // конструктор без параметров
{
    top = 0;
}
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
18.12.2012, 21:30     Конструктор без параметров #3
Инициализация.
necheyhin_a_v
3 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 60
18.12.2012, 21:32  [ТС]     Конструктор без параметров #4
Цитата Сообщение от David Sylva Посмотреть сообщение
Инициализация.
Я понимаю, что конструктор это инициализатор, однако почему записано не в теле конструктора, а через : и почему используется для переменной скобки ()?
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
18.12.2012, 21:35     Конструктор без параметров #5
Drus, Через список инициализация происходит шустрее. + к тому константные данные можно инициализировать только через список.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
18.12.2012, 21:40     Конструктор без параметров #6
Цитата Сообщение от necheyhin_a_v Посмотреть сообщение
однако почему записано не в теле конструктора, а через : и почему используется для переменной скобки ()?
Так захотел автор кода. Так бы сделали многие.
necheyhin_a_v
3 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 60
18.12.2012, 21:45  [ТС]     Конструктор без параметров #7
Что-то я не совсем понял, а если необходимо инициализировать несколько значений, как это будет выглядеть? И разница только в быстродействии?
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
18.12.2012, 21:50     Конструктор без параметров #8
Цитата Сообщение от necheyhin_a_v Посмотреть сообщение
Что-то я не совсем понял, а если необходимо инициализировать несколько значений, как это будет выглядеть? И разница только в быстродействии?
Будет перечисление через запятую: classname() : var1(13), var2(42), var3(146) {}.

Разница в том, что так конструкторы инициализируемых полей вызываются один раз, а если писать присваивания в теле конструктора класса, то будут сначала вызваны конструкторы полей по умолчанию, а потом уже операторы присваивания. Очевидно, это как-то влияет на производительность; для некоторых классов может повлиять на логику работы. Плюс присваиванием в конструкторе нельзя инициализировать некоторые объекты вроде тех же ссылок, только списком инициализации.
necheyhin_a_v
3 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 60
18.12.2012, 21:56  [ТС]     Конструктор без параметров #9
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Будет перечисление через запятую: classname() : var1(13), var2(42), var3(146) {}.

Разница в том, что так конструкторы инициализируемых полей вызываются один раз, а если писать присваивания в теле конструктора класса, то будут сначала вызваны конструкторы полей по умолчанию, а потом уже операторы присваивания. Очевидно, это как-то влияет на производительность; для некоторых классов может повлиять на логику работы. Плюс присваиванием в конструкторе нельзя инициализировать некоторые объекты вроде тех же ссылок, только списком инициализации.
Т.е. инициализировать лучше этим способом, чем присваиванием в теле конструктора?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 22:04     Конструктор без параметров
Еще ссылки по теме:

Функция без параметров? - C++
Начал разбираться с библиотекой alglib для решения интеграла сложной функции. В документации нашел такой код, но не могу разобраться с...

Конструкторы с и без параметров - C++
Здравствуйте, Не могу понять где ошибка, на экран выводит мусор, а нужно бы нормальные человеческие числа.. #include <iostream> ...

Как написать конструкторы копирования, инициализации и конструктор без аргументов? - C++
Как написать конструкторы копирования, инициализации и конструктор без аргументов? Вот код #include <iostream> using namespace...

Использование функции get() без параметров - C++
Добрый вечер! Помогите, пожалуйста, разобраться с примером. #include <iostream.h> int main () { char ch; while (...

Pthread взывать поток без параметров - C++
void RunClient(){ int iret; const char *message = "Thread Run_Client()"; if (!Running){ try{ _Running = true; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
18.12.2012, 22:04     Конструктор без параметров #10
Цитата Сообщение от necheyhin_a_v Посмотреть сообщение
Т.е. инициализировать лучше этим способом, чем присваиванием в теле конструктора?
Да. И помните, что конструкторы полей вызываются в том порядке, в каком поля перечислены в определении класса. Вне зависимости от того, в каком порядке вы их напишете в списке инициализации. Это на случай, если вздумается инициализировать одно поле значением другого.
Yandex
Объявления
18.12.2012, 22:04     Конструктор без параметров
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru