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

operator= возврат значения и просто ссылки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с классами. Найти сумму элементов каждой строки матрицы http://www.cyberforum.ru/cpp-beginners/thread809004.html
Здравствуйте. Помогите, пожалуйста, написать следующую программу: Создайте класс в соответствии с условием задачи. Определите функции-члены класса для вывода реализации требуемых действий. Задача: Найдите сумму элементов каждой строки матрицы. Заранее спасибо.
C++ strrok_s Есть код, компилятор (вижуал студио 2010) не выдает ошибок и варнингов. В определенный момент просто пишет, что работа программы прикращена, что не так можете пожалуйста взглянуть, подозреваю, что что-то связанное с стртоком. В дебаге что-то писало про неправильное значение &context #include "stdafx.h" #include <iostream> #include <conio.h> #include <iomanip> #include <stdio.h> #include... http://www.cyberforum.ru/cpp-beginners/thread808997.html
Программа if-else (координаты и радиус круга) C++
Здравствуйте! Необходимо написать программу: пользоатель вводит 2 координаты и радиус круга, программа их высчитывает и в зависимости от результата должна написать в какой четверти находится точка. Прикладываю условие и часть выполненной мною программы. Не знаю как заставить понимать, что точка находиться в третьей и четвертой системе координат. #include <locale.h> #include <conio.h>...
C++ Считывание текста с файла
Здравствйте,нужна программа которая будет считывать текст с файла и выводить его в другой файл.Что то не выходитюПрограмма просто создает пустой файлюПомогите! #include<stdio.h> int main() { FILE *fin,*fout; fin = fopen("D:\\input.txt","r"); fout= fopen("D:\\output.txt","w");
C++ Считывание текстового масива , русского http://www.cyberforum.ru/cpp-beginners/thread808977.html
Возможно вопрос баян и отправьте меня куда-то смотреть ответ, но я не нашёл как сделать это, мне надо считать в массив текст введённый в консоли на русском языке. вот к примеру обрывок int main () { char mass; cin>>mass; Добавлено через 1 час 45 минут Ну т.е что бы у меня в массив записались именно русские символы.
C++ Написать вывод из файла 2 способами в С++ табуляцию функции написать вывод из файла 2 способами в С++ табуляцию функции F(x)=2tg(x-1) на с шагом 0,1.. подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.03.2013, 00:40     operator= возврат значения и просто ссылки
тип возвращаемого объекта определяется типом возвращаемого объекта , а не тем, что написано в return.
чтобы увидеть разницу между возвратом по ссылке и возвратом по значению, напишите конструктор копирования для класса S, который бы на печать что-нибудь выводил. Так и увидите, что в одном случае вызывается конструктор копирования, а в другом -нет. Конструктор копирования может быть тяжелым и в этом случае возврат значения - лишнаяя ненужная работа. Кроме того, не совсем стандартно возвращать значения, хоть и можно. В таких случаях обычно советуют делать как для int. Вот простой тестик погоняйте со всеми вариантами оператора =
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
 
struct Foo
{
    int value;
 
    Foo(int val)
        : value(val)
    {
    }
 
    Foo(const Foo& other)
        : value(other.value)
    {
        std::cout << "copy ctor of Foo, value = " << other.value << std::endl;
    }
 
    /*
    Foo& operator = (const Foo& other)
    {
        value = other.value;
        return *this;
    }
    */
 
    Foo operator = (const Foo& other)
    {
        value = other.value;
        return *this;
    }
 
    /*
    const Foo& operator = (const Foo& other)
    {
        value = other.value;
        return *this;
    }
    */
 
    /*
    const Foo operator = (const Foo& other)
    {
        value = other.value;
        return *this;
    }
    */
};
 
int main()
{
    int i1 = 1;
    int i2 = 2;
    int i3 = 3;
    (i1 = i2) = i3;
 
    Foo foo1(1);
    Foo foo2(2);
    Foo foo3(3);
    (foo1 = foo2) = foo3;
 
    std::cout << "foo1 = " << foo1.value << std::endl;
    std::cout << "i1   = " << i1 << std::endl;
 
    return 0;
}
 
Текущее время: 17:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru