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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2012, 06:20   #11
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Вот, говорят, конструктор ничего не возвращает.
А еще говорят, экземпляр абстрактного класса не создать.

Код:
class Z
{
public:
	Z()	{}
	virtual ~Z() = 0;

	void func()	
	{	
		//
	}

};


int main()
{	
	Z *pz = (Z*) malloc(sizeof(Z));
	Z& refz = pz->Z::Z();
	refz.func();
}
EUGY вне форума Ответить с цитированием
Старый 22.12.2012, 06:30   #12
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

EUGY, gcc говорит
Цитата:
Сообщение от gcc
error: cannot call constructor 'Z::Z' directly|
Вот такое работает, но это скучно
Код:
int main()
{
    char mem[sizeof(Z)];
    Z & rz = *(Z *)(mem);
    rz.func();
}
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 22.12.2012, 07:49   #13
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

У Gcc совсем нет чувства юмора. То ли дело MS VS.

зы
Цитата:
У Gcc совсем нет чувства юмора.
Был не прав. Все у него есть.
Код:
template <class T> void func()
{
	func<T*>();
}

int main()
{
    func<int>();
}
Умиляет компиляция. MS сразу посылает, а этот же начинает скурпулезно инстанцировать вложенные шаблоны пока не наберется пол тысячи. А после еще нагло предлагает добавить:
(use -ftemplate-depth-NN to increase the maximum)

Последний раз редактировалось EUGY; 22.12.2012 в 13:31.
EUGY вне форума Ответить с цитированием
Старый 22.12.2012, 15:52   #14
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

"дикая рекурсия" какая-то...
каждый по своему хорош. и шутки у каждого свои
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 22.12.2012, 19:33   #15
Max11111
Новичок
Джуниор
 
Регистрация: 21.12.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Smogg Посмотреть сообщение
А насчет рекурсии, то попробуйте вместо "возвращает" говорить "вызывает". "Возвращает" корректнее, но "вызывает" - понятнее.

I.e. функция с аргументами nod( 15, 16), вызывает nod(15,8), которая вызывает nod(15,4), которая вызывает nod(15,2), которая вызывает nod(15,1), и вот которая уже возвращает 1.
1. Хорошо. Спасибо что поправили
2. Скажите пожалуйста, а откуда программа знает, где ей остановится? Где остановится скажем на единице, а где на тройке? С рекурсиями я еще не мел дело. Только поверхосно. Как я понимаю это что-то вроде циклов. Только вот условия выхода, я тут не вижу. И как программа будет вести себя вот к примеру в таком случае "return 2 * nod(x / 2, y / 2);"? Будет вызывать НОД Х или Y? После чего умножать. Да и вообще, смысл делить, умножать, делить умножать и т. д... Меня эта программа прям в ступор вогнала ))
Алгоритм Евклида без проблем понял. А вот с этим вожусь.

И еще вопрос, если кому не трудно - ответьте пожалуйста. Когда идет вызов рекурсии, код повторяется весь что находиться в ней (рекурсии), или же определенный кусок кода, который непосредственно нужен нам?
Max11111 вне форума Ответить с цитированием
Старый 22.12.2012, 22:05   #16
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
wc полон \0
так что там будет 0.)
Эк, если бы... Вы не заметили "безопасного суффикса" _s. После добавления строки, wsccat_s забивает весь оставшийся буфер трешем. Наверно, для того, чтобы выскочил аксеес вайолейшн еще в дебаге. Но все равно не очевидно.
Ну, ладно остаток буфера, так ведь еще иногда у меня и в предшествующий от заявленного адреса wchar_t (где должен сохраняться нуль) писался какой-то случайный символ от прежних вызовов этой функции. (А может это мне по темноте так казалось и я сам ошибался на +- 1 в условиях цикла). И это при всей странности GetOpenFileName, требующей терминации двойным нулем.
Цитата:
Сообщение от Granus Посмотреть сообщение
Про двойные форы

int a[m][n];
for (int i = 0, j = 0; i < m && j < n; j++, ((j == n) ? j = 0, i++ : 0))
std::cout << i << ", " << j << std::endl;
О! Надо запомнить...
Цитата:
Сообщение от Granus Посмотреть сообщение
Раз уж такая пьянка, древнейший боян:

int a[6] = {1, 4, 9, 16, 25, 36};
for (int i = 0; i < 6; ++i)
std::cout << (i + 1) << "^2 = " << i[a];
Истинный дзен...

Что тут происходит??
Smogg вне форума Ответить с цитированием
Старый 22.12.2012, 23:54   #17
Max11111
Новичок
Джуниор
 
Регистрация: 21.12.2012
Сообщений: 4
По умолчанию

Разобрался, благодарю за ответы
Max11111 вне форума Ответить с цитированием
Старый 23.12.2012, 16:10   #18
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

на сколько я знаю в с++
оператор new заполняет пространство нулями.
дабы в с++ это означает пусто.
да про префикс проглядел. я редко использую их.
в основном работаю с библиотекой tchar.h
единственное может у вас произошёл глюк.
например копирование строки должно быть на 1 меньше
объёма выделенной памяти, это только со строками.
дабы сохранить 0 в конце.
если 0 не будет, то будет мусор до первого 0.
однажды мне удалось сохранить в файл весь объём памяти моей проги...
так что приколов много)

вот сейчас удивился bcb скушал

Код:
switch(a)
{
    1:...
    2:...
    3:...
}
выполняются все... и клал он на break;
////-------------
Есть ещё один прикол.... который забит вся afx библа... в студии 2012.

Код:
for(int i = 0; i < len; i++)
{
...
и где то тут брек или ретурн
в большинстве случаев даже без условий.
...
}
короче вор который выполняется всегда 1 раз.
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 23.12.2012 в 16:17.
Perchik71 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что за функция. Predator199 PHP 6 22.10.2012 18:40
Что за функция? X_RaY Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 11.09.2011 16:55
Что выполняет функция? KingBelt Общие вопросы C/C++ 5 29.11.2010 09:06
Что за функция TimeGetTime??? dolphin705 Общие вопросы Delphi 3 25.01.2010 19:14
что делает функция length() ??? Paul_AG Общие вопросы C/C++ 4 11.05.2009 00:07