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

возвращаемые значения функции шаблонного класса A и A<T> - C++

Восстановить пароль Регистрация
 
kotleta
 Аватар для kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
27.09.2012, 14:09     возвращаемые значения функции шаблонного класса A и A<T> #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 первый листинг 
 
template <typename T>
class A
{
 
 public:
  T a;
 
  A& f()
  {
   a=3;
  }
};

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
второй листинг
template <typename T>
class A
{
 
 public:
  T a;
 
  A<T>& f()
  {
   a=3;
  }
};
В первом случае возвращается объекта класса А, а во втором случае объект параметризованного класса А. Но у меня как-то неукладывается в голове.

Если класс параметризованный, то при возвращении объекта класса А без указания параметров шаблона будет получатся так, что нет возможности понять разницу: возвращаемый объект А не показывает какой тип был применен для формирования класса А.

Например:

A <int>
A <double>

но функция f из первого листинга вернет объект класса А

Сможем ли мы их сравнивать? И какой тогда смысл возвращать объект класса без параметров в параметризованном классе.

В случае при втором листинге, все гораздо понятнее
Если объявили A<int>
то и вернется объект A <int> по завершении функции f
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2012, 14:09     возвращаемые значения функции шаблонного класса A и A<T>
Посмотрите здесь:

Дружественные функции шаблонного класса C++
C++ наследник шаблонного класса
Объявление шаблонного класса C++
C++ Возвращаемые значения функции
C++ Создание Шаблонного класса
C++ Инстанцирование шаблонного класса
Вызов метода у шаблонного поля, шаблонного класса C++
Описание функции шаблонного класса библиотеки в отдельном cpp-файле C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.09.2012, 14:24     возвращаемые значения функции шаблонного класса A и A<T> #2
В параметризованном классе, ежели мы используем непараметризованный тип данного класса - компилятор знает, что мы имеем ввиду текущий инстанс.
C++
1
2
3
4
5
6
template<typename T>
struct This
{
   // Эквивалентно This<T>& get_this() const;
   This& get_this() const;
};
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
27.09.2012, 14:33     возвращаемые значения функции шаблонного класса A и A<T> #3
ога. вот еще доказательство:
http://liveworkspace.org/code/fd685f...8a1fafef6024ae
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
template <typename T>
class A
{
  public:
    static void Check()
    {
       const bool is = std::is_same< A, A<T> >::value;
       std::cout << is << std::endl; 
    }
};
 
 
int main()
{
  A<int>::Check();
  return 0;
}
Yandex
Объявления
27.09.2012, 14:33     возвращаемые значения функции шаблонного класса A и A<T>
Ответ Создать тему
Опции темы

Текущее время: 00:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru