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

"Анонимные" (временные) объекты? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массив объектов класса http://www.cyberforum.ru/cpp-beginners/thread631783.html
class abc { public: int x,y; }; abc all; int main() { all.x=5; all.x=6;
C++ Пролетает cin >> Нужно заполнять вектор пока не введено 'x', потом сложить количество (введенное) первых элементов. После 'x' программа сразу завершается!!! . И еще вопрос как фильтровать ввод cin >> (число) от не числа. Спасибо!!! #include <iostream> #include <vector> using namespace std; int main() { vector<double> stream; http://www.cyberforum.ru/cpp-beginners/thread631775.html
C++ пишем свой троян с нуля
Всем привет)))соглашусь, что изобретаю велосипед, но хочется сделать все своими ручками не прибегая к open source и т.п. для повышения своего опыта в программировании на Visual C++ . Хочу, чтобы меня поставили на иснниный путь. Итак, цель - написание трояна, а именно кейлоггера) для получения пароля от vk.com. Погуглил , почитал мануалы парочку часов, узнал основные схемы проникновения троянов на...
C++ комманды с system("")
где можно найти описания всех комманд с system. пример system("PAUSE") или system("cls")
C++ Создайте двумерный массив целочисленный массив А[1..10], [1..7] и найдите сумму всех его элементов имеющие оба нечетные индексы. http://www.cyberforum.ru/cpp-beginners/thread631734.html
Создайте двумерный массив целочисленный массив А, и найдите сумму всех его элементов имеющие оба нечетные индексы. За ранее Благодарю
C++ Дан массив действительных чисел A[10]. Отсортировать по убыванию. Дан массив действительных чисел A. Отсортировать по убыванию. За ранее Благодарю подробнее

Показать сообщение отдельно
edward_jonson
 Аватар для edward_jonson
157 / 157 / 25
Регистрация: 23.02.2011
Сообщений: 388
01.08.2012, 19:08     "Анонимные" (временные) объекты?
Пусть имеется класс T:
C++
1
2
3
4
5
6
7
class T
{
public:
    int a;
    int b;
    T(int _a, int _b) : a(_a), b(_b) {}
}
Имеется функция
C++
1
2
3
4
void func(T* obj)
{
    std::cout << obj->a << " " << obj->b << std::endl;
}
Здесь в качестве параметра требуется передать указатель на объект, например
C++
1
2
T O(4,2);
func (&O);
Но, если содержимое объекта O после передачи в функцию не представляет интереса, и дабы не загромождать код объявлениями переменных, можно ли передавать в функцию временный(?)
(в Джаве что-то подобное называется анонимным) объект?
C++
1
func(new T(4,2));
Хотя на самом деле, я примеров такой передачи ещё не видел, но проверил, работает
И опять же, в Джаве то сборщик мусора есть, а здесь, увы, неизбежная утечка. Только из-за неё и не юзабельно?
А, ну разве что.
C++
1
2
3
4
5
void func(T* obj)
{
    std::cout << obj->a << " " << obj->b << std::endl;
    delete obj;
}
И кстати, если в такую функцию передать
C++
1
2
T myObj(11,22);
func(&myObj);
то почему delete не освобождает память по ссылке:
C++
1
2
3
func(&myObj);
func(&myObj);
func(&myObj);
Всё выводится ОК.
Ну или же можно использовать
C++
1
func( &T(4,1) );
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru