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

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

Войти
Регистрация
Восстановить пароль
 
Fusix
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 133
#1

Класс - C++

02.04.2011, 15:13. Просмотров 387. Ответов 9
Метки нет (Все метки)

Есть класс:
C++
1
2
3
4
5
6
class a
{
public:
int i = 4;
browser br;
};
Как сделать чтобы при создании объекта класса, объект br создавался не сразу, а только при присвоении:
C++
1
2
a cl;
cl.br = ...;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2011, 15:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс (C++):

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { friend class diagonal; ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами - C++
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Отдельно класс данных, класс формул и главный класс - C++
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число" - C++
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию сложения пар (a,b)+(c,d) =(a+b,c+d)...

Класс, производный класс, паблик-класс - C++
Задание: Создать класс колесо, которое имеет радиус. Определить конструкторы и метод доступа. Создать класс машин, содержащий класс колесо....

Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка - C++
Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки...

9
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.04.2011, 15:18 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class a
{
public:
int i = 4;
 
   void SetBrowser( browser * br )
   {
        _br = br;
   }
 
private:
    browser * _br;
};
 
a cl;
cl.SetBrowser( ... );
1
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.04.2011, 15:18 #3
Конструктор вызывается для каждого объекта только один раз и только в определённом месте - при создании (объявлении) объекта.
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.04.2011, 15:18 #4
Так скомпилировать не получится
C++
1
2
public:
int i = 4;
.)
1
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
03.04.2011, 00:47 #5
Deviaphan, Если не брать в рассчет новый стандарт - согласен.
Стандарт
пункт In-class member initializers
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
03.04.2011, 06:58 #6
Цитата Сообщение от ForEveR Посмотреть сообщение
Если не брать в рассчет новый стандарт - согласен
Многабукаф на не русском, не хочу читать.) Но память подсказывает, что в стандарте идёт речь об инициализации констант, а тут - переменная.

Добавлено через 4 минуты
Не удержался, почитал.) И правда, теперь можно.
Разведу холивар, но я глубоко убеждён, что зря они так. Теперь моск взорвать проще, чем глупые ошибки инициализации обнаружить.
0
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
03.04.2011, 07:52 #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class a 
{ 
public: 
    int i = 4; 
    void SetBrowser( browser * br ) 
    {
      _br = br; 
    } 
private: 
    browser * _br; 
}; 
 
a cl; 
cl.SetBrowser( ... );
Ежели вы не обнуляете в конструкторе указатель _br, то его случайное значение уже при создании объекта
может куда-то таки указывать.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
03.04.2011, 07:57 #8
Цитата Сообщение от Mr.X Посмотреть сообщение
Ежели вы не обнуляете в конструкторе указатель _br
Мне было влом писать полное определение класса. Я отразил только суть.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
03.04.2011, 14:24 #9
Deviaphan, Ну все же, это получается все равно что конструктор просто с заранее определенным константым значение.

C++
1
2
3
4
5
6
7
8
9
class A
{
public:
   A():a(7)
   {
   }  
private:
   int a=7;
};
Две эти записи эквивалентны.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
03.04.2011, 14:30 #10
Цитата Сообщение от ForEveR Посмотреть сообщение
Две эти записи эквивалентны.
Да я понял.) Это большой плюс для простых классов: можно не рисовать конструктор. Но для сложных классов мне это кажется неудобным, т.к. часть инициализации будет в файле реализации в конструкторе, а часть в объявлении класса. Т.е. единая операция конструирования объекта получается разорвана на два файла.
С другой стороны, это проблема только при неаккуратном программировании, т.е. в среде студентов.
В общем норм всё, если правильно использовать и не перебарщивать. Как обычно, короче.)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2011, 14:30
Привет! Вот еще темы с ответами:

Абстрактный класс CGraphicsObject, его наследник - базовый класс CPoint, и класс - наследник от CPoint - C++
Всем доброй ночи! Очень нужна помощь и по мере возможности разъяснения на темы: абстрактный класс в задании(что он из себя представляет и...

Иерархия геометрических объектов: клас точка->класс квадрат->класс прямоугольник - C++
Иерархия геометрических объектов: класс точка->класс квадрат->класс прямоугольник. Построить эту иерархию наследованием.. Прошу помочь -...

Ошибка в выводе данных, класс выводит правильно, а класс в классе - нет - C++
Неизвестная для меня проблема. Класс выводит данные правильно из Consigment, а вот третий экземпляр класса, работает не верно, если...

Класс домов и класс улиц для учета поступлений квартплаты. Массив - C++
Задание: вырезано Файл StdAfx.h #pragma once #include "targetver.h" #include <stdio.h>


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
03.04.2011, 14:30
Ответ Создать тему
Опции темы

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