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

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

Войти
Регистрация
Восстановить пароль
 
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
#1

Конструктор - C++

27.11.2011, 09:25. Просмотров 590. Ответов 12
Метки нет (Все метки)

Вот если в конструкторе инициализировать какую-то переменную (к=0), можно же ее в каком-то методе изменять (например к++)?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 09:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор (C++):

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования - C++
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Класс...

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) - C++
class Test { int i; public: void test(int i) { this -> i = i; } }; Конструктор Test::Test всегда вызывается...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику - C++
#include "stdafx.h" #include <iostream> #include <conio.h> #include <windows.h> #include <math.h> #include <algorithm> using...

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

12
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.11.2011, 09:35 #2
можно
1
Сыроежка
Заблокирован
27.11.2011, 09:37 #3
Цитата Сообщение от marina2 Посмотреть сообщение
Вот если в конструкторе инициализировать какую-то переменную (к=0), можно же ее в каком-то методе изменять (например к++)?
Если этот член класса не являепся константным объектом или константной ссылкой, то конечно можно изменять в любом методе, который в свою очередь не является константным.
1
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
27.11.2011, 09:48  [ТС] #4
Просто в MFC столкнулась с проблемой, что при приращении переменной программа грохается...
0
Сыроежка
Заблокирован
27.11.2011, 09:54 #5
Цитата Сообщение от marina2 Посмотреть сообщение
Просто в MFC столкнулась с проблемой, что при приращении переменной программа грохается...
Это никак не связано с той постановкой вопроса, который вы сформулировали. Если бы нельзя было изменить член класса, компилятор вам бы об этом сообщил на этапе компиляции.
1
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
27.11.2011, 15:44  [ТС] #6
А не подскажете, как из функции базового класса получить доступ к функции производного класса, а то я пока не сталкивалась...?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.11.2011, 16:09 #7
Никак.
Читай про виртуальные функции.
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
27.11.2011, 16:13 #8
Цитата Сообщение от marina2 Посмотреть сообщение
А не подскажете, как из функции базового класса получить доступ к функции производного класса, а то я пока не сталкивалась...?
через dynamic_cast
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.11.2011, 16:16 #9
Цитата Сообщение от alex_x_x Посмотреть сообщение
через dynamic_cast
Не вариант. Базовый класс не должен знать о потомках.
1
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
27.11.2011, 16:19 #10
Сыроежка,
Если этот член класса не являепся константным объектом или константной ссылкой, то конечно можно изменять в любом методе, который в свою очередь не является константным.
Про mutable не упомянули.
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
27.11.2011, 16:28 #11
Цитата Сообщение от Deviaphan Посмотреть сообщение
Не вариант. Базовый класс не должен знать о потомках.
мало ли что не должен - это c++
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.11.2011, 16:35 #12
Цитата Сообщение от alex_x_x Посмотреть сообщение
мало ли что не должен - это c++
В любом случае это всё равно не доступ к методу дочернего класса из базового. Ведь доступ через потомка происходить будет.
А ещё я не буду подсказывать, как курить и кольца из носа пускать, потому что это тоже не правильно.)
0
Сыроежка
Заблокирован
27.11.2011, 16:55 #13
Цитата Сообщение от marina2 Посмотреть сообщение
А не подскажете, как из функции базового класса получить доступ к функции производного класса, а то я пока не сталкивалась...?
Базовый класс не знает, какие будут созданы производные классы на его основе. Это только производные классы знают о своих базовых классах. Обратное не верно.
Поэтому чтобы выполнить такую задачу, надо использовать динамическое приведение типов, если это допустимо к вашему объекту класса, и если все закончится успешно без генерации исключения, то вызывать функцию производного класса.
0
27.11.2011, 16:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2011, 16:55
Привет! Вот еще темы с ответами:

Конструктор производного класса требует конструктор предка - C++
Выдаёт вот такую вот ошибку: no matching function for call to 'Cube::Cube()' class Cube { protected: int magInt; bool...

Конструктор инициализации, конструктор копирования, деструктор - C++
Я сделал почти задание по перегрузке операторов. Осталось одно, тоесть три: конструктор инициализации, конструктор копирования, деструктор....

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Конструктор класса не видит конструктор по умолчанию другого класса - C++
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора по умолчанию, хотя он там, конечно, есть....


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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