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

Амперсанд перед именем функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ подбор паролей http://www.cyberforum.ru/cpp-beginners/thread166082.html
может кто то писал,не как не могу разобраться
C++ Указатели на виртуальные функции-члены //Óêàçàòåëè íà âèðòóàëüíûå ôóíêöèè-÷ëåíû. #include <iostream> using namespace std; class Mammal { public: Mammal():itsAge(1) { } virtual ~Mammal() { } http://www.cyberforum.ru/cpp-beginners/thread166079.html
C++ Линейная программа.
Уважаемые, у меня небольшая просьба. Только начинаю изучать программирования, и тут такая задача. Помогите в решении. Программа линейная. Язык программирования С.
сколько человек прожил месяцев, дней, часов, минут, секунд C++
Написать программу, которая по введённому возрасту в годах (например, 18.5 лет) выводит сколько человек прожил месяцев, дней, часов, минут, секунд
C++ Расположить числа по возрастанию http://www.cyberforum.ru/cpp-beginners/thread166067.html
Пользователь вводит четыре числа: a, b, c, d float a, b, c, d; cin >> a >> b >> c >> d; как легче всего расположить их по возрастанию? заранее спасибо
C++ Gnu C++ и Cygwin Начал обучение языка с книги "C++ for Dummies". И с самой первой главы попал в затык. Нужно установить Gnu C++. Для написания первой программы требуется редактор rhide. Конечно можно было бы установить, что-то другое, но хотелось бы по книге. Как я понял и Gnu C++ и Rhide это программы под Linux. Заморачиваться с установкой Linux как-то не хочется. Нашел проект Cygwin, который вроде как позволяет... подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.09.2010, 02:20     Амперсанд перед именем функции
лендер,

Хотя бы так... Память то кто будет выделять? Хотя смысла в этом вообще нет. +утечка памяти

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
double &re(void)
{
   double *ret=new double(5.14);
   cout<< endl << ret;
   return *ret;
}
 
int main(){
  double &a = re();
  cout << endl << &a << endl << a;
  return 0;
}
Лучше пример все же будет полагаю:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
class A
{
public:
    A(){i=5;}
    ~A(){}
    friend std::ostream& operator<<(std::ostream&, const A&);
private:
    int i;
};
 
std::ostream&operator<<(std::ostream&os, const A& Ob)
{
    os<<Ob.i;
    return os;
}
 
int main()
{
    A Ob;
    std::cout<<Ob<<'\n';
    return 0;
}
Возвращаем ссылку на элемент класса std::ostream.

А если попытаться сделать так:
C++
1
2
3
4
5
std::ostream operator<<(std::ostream os, const A& Ob)
{
    os<<Ob.i;
    return os;
}
То мы получим ошибку.
Код
 Error	1	error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>
 
Текущее время: 13:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru