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

перегрузка операций. особенности. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как ввести данные в динамический массив структур? http://www.cyberforum.ru/cpp-beginners/thread123954.html
Подскажите пожалуйста, можно ли вводить данные в динамический массив структур c помощью cin >> следующим образом: #include <iostream> using namespace std; const int Arsize = 20; struct sponsor { char name; double money;
C++ Записи Здравствуйте! Помогите пожалуйста преобразовать код программы на паскале, в С++: program Project2; uses crt; type tv=record mark: string; st:real; mag:string; http://www.cyberforum.ru/cpp-beginners/thread123945.html
C++ Упорядочивание символьного массива указателей
#include <iostream> #include <windows.h> //Для начала установите вручную шрифт Lucida Console в свойствах окна консоли. #include <fstream> using namespace std; void up(int *s); char *sp(int i); const int ras = 6; //Размер массива. int uselust = 467;
Описать класс "домашняя библеотека" C++
Задание: Описать класс "домашняя библеотека",поиск книг по автору и году выдачи, предусмотреть добавленние книг в библеотеку и удаление книг из нее. Как описывать такой класс я знаю, но не могу сделать добавление книг и удалении, мне бы пример какой то! Спасибо!
C++ Задать двумерный массив с помощью линейного односвязного списка http://www.cyberforum.ru/cpp-beginners/thread123892.html
Помогите решить задачу: "Задать двумерный массив с помощью линейного односвязного списка". Может кто знает, буду очень благодарен!
C++ Подсчитать число отрицательных частиц не и ни В некотором тексте (например Ни одна система не остается неизменной) определить отрицательные частицы не и ни :) помогите пожалуйста сделать задачу на С подробнее

Показать сообщение отдельно
limelight
7 / 7 / 0
Регистрация: 17.04.2010
Сообщений: 112
30.04.2010, 19:29     перегрузка операций. особенности.
Здравствуйте.
Есть вот такой кусок кода:
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
#include <iostream>
#include <iostream>
using namespace std;
 
class stroka
{
   private:
      enum {SZ = 100};
      char str[SZ];
   public:
      stroka()
      {str[0] = '\0';}
      stroka(char s1[])
      { strcpy(str, s1);}
      void my_show() //показать текст
      {
         cout<<str<<endl;
      }
      stroka operator+(stroka s2);
      
};
stroka stroka::operator+(stroka s2)
         {
            strcat(str, s2.str);
            return stroka(str);
         }
 
int main()
{
   
   setlocale(LC_ALL, "RUSSIAN");
   stroka s1("Кот");
   stroka s2("Бегемот");
   
   
   s1.my_show();
   s2.my_show();
   s1 = s1+s2;  
   s1.my_show();
   s1 = s1 + " - хороший кот!";
   s1.my_show();
  
   cin.ignore().get();
   return 0;
}
Почему РАБОТАЕТ строка s1 = s1 + " - хороший кот!"; - ведь я перегрузил stroka operator+(stroka s2);
По идее ведь не хватает перегрузки stroka operator+(char s2[]); но этого получается и не нужно. раз работает так. значит происходит неявное преобразование типов??где именно и как? я прав?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru