Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
1

Функция, имя которой совпадает с именем класса

02.07.2013, 08:42. Показов 5617. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот например
C++
1
2
3
4
5
6
7
8
9
10
...
class e
{
      int a;
      float b;
public:
      //И здесь функция, имя которой равняется имени классу, с помощью которой мы инициализируем переменные а и b.
      // Что-то типа e::(int a, float b){}
};
...
Но к сожалению я не помню ее формулировки((. Никто не мог бы подсказать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2013, 08:42
Ответы с готовыми решениями:

Как описывать функции, заданные в шаблоне класса, тип возвращаемого значения которых совпадает с именем класса
Здравствуйте. А как описывать функции, заданные в шаблоне класса, тип возвращаемого значения...

Напечатать список людей, чье имя совпадает с именем, которое ввел пользователь
Всем привет форумчане!Помогите найти ошибку в коде! Вот задание:Объявить структуру, содержащую...

Напечатать список людей, чье имя совпадает с именем, которое ввел пользователь.
Задание следующее: Набросал следующий код: #include "string.h" main() { int i, b;...

Напечатать список людей, чье имя совпадает с именем, которое ввел пользователь
Задание: Объявить структуру, содержащую строки, соответствующие имени и фамилии человека. Создать...

13
2687 / 2259 / 244
Регистрация: 03.07.2012
Сообщений: 8,224
Записей в блоге: 1
02.07.2013, 09:01 2
C++
1
e(int a1,float b1){a=a1;b=b1;}
1
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 09:15  [ТС] 3
Идет ошибка при попытке создания элемента класса.
IntelliSense: для класса "Employer" не существует конструктор по умолчанию
0
Заблокирован
Автор FAQ
02.07.2013, 09:21 4
Цитата Сообщение от Pepsy Посмотреть сообщение
//И здесь функция, имя которой равняется имени классу, с помощью которой мы инициализируем переменные а и b.
* * * // Что-то типа e:int a, float b){}
- ОМГ это же конструктор преобразования для класса

Добавлено через 3 минуты
лови вобщем
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
#include <iostream>
using namespace std;
 
class Employer
{
    private:
        int a;
        float b;
    public :
        Employer();       //конструктор по умолчанию
        Employer(int _a, float _b);//коснтруктор преобразования
};
 
Employer::Employer()
{
    a = 0;
    b = 0;
}
 
Employer::Employer(int _a, float _b)
{
    a = _a;
    b = _b;
}
 
int main()
{
    Employer(5, 6.3);
    return 0;
}
http://codepad.org/jwjc6136 и почтиай про ООП
Output:
No errors or program output.
2
 Аватар для Гром
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
02.07.2013, 09:34 5
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Writer
{
public:
Writer(): name("Чукча"), age(34) {}   //Конструктор по умолчанию
Writer(const std::string& nm, int a): name(nm), age(a) {}   //Конструктор с параметрами
private:
std::string name;
int age;
};
 
void f()
{
Writer MegaWriter;   //Используется конструктор по умолчанию - Чукча-писатель
Writer HolmesFather("Sir Arthur Ignatius Conan Doyle", 71);   //Здесь и ниже - конструктор с параметрами
Writer MadamRo = Writer("J. K. Rowling", 47);
}
0
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 10:00  [ТС] 6
C++
1
2
3
4
5
6
7
8
9
10
int a;
char line[100];
cout<<"Введите кол-во"<<endl;
cin>>a;
for(int i=0; i<a; i++)
{
    cout<<"Введите ФИО "<<i+1<<endl;
    gets(line);
    cout<<line;
}
Вопрос: на 1 итерации цикла cout и gets() пропускаются, а на 2, 3 и т.д. - нет. В чем проблема??
0
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
02.07.2013, 10:15 7
Pepsy, после ввода строки в буфере обмена остается клавиша enter - перенос каретки. На первой итерации он и записывается в line и выводится (cout не опускается, просто он выводит перенос строки). Этот enter остался после ввода строки "а". Я обычно делают так:
C++
1
2
3
cin >> a;
cin.ignore(); //игнорирует перевод каретки - удаляет её из буфера
// или можно gets(crap);, но перед этим char crap[10]; - 10 на всякий случай
0
Заблокирован
Автор FAQ
02.07.2013, 10:18 8
Pepsy, ввод коробит \n остающийся в буффере после того как нажимаем Enter
Думаю ты хотел сделать то что показываю ниже
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
#include <iostream>
using namespace std;
 
class Employer
{
    private:
        int  a;
        char fam[65];
    public :
        Employer();                  //êîíñòðóêòîð ïî óìîë÷àíèþ
        Employer(int _a, char * _fam);//êîñíòðóêòîð ïðåîáðàçîâàíèÿ
    void Init(int _a, char * _fam);
    void Show();
};
 
Employer::Employer()
{
     a  = 0;
    *fam= 0;
}
 
Employer::Employer(int _a, char * _fam)
{
    Init(_a, _fam);
}
 
void Employer::Init(int _a, char * _fam)
{
    a = _a;
    strncpy(fam, _fam, 64);
}
 
void Employer::Show()
{
    cout<<"a  = "<<a<<endl;
    cout<<"fam= "<<fam<<endl;
}
 
int main()
{
    int i, a;
    char fam[65];
    Employer e[5];
    cout<<"\tINPUT  : "<<endl;
    for(i = 0; i < 5; i++)
    {
        cout<<"Employer #"<<i + 1<<" : "<<endl;
        cout<<"a  = ";cin>>a;cin.get();
        cout<<"fam= ";cin.getline(fam, 64);
        e[i].Init(a, fam);
    }
    cout<<"\tOUTPUT : "<<endl;
    for(i = 0; i < 5; i++)
    {
        cout<<"Employer #"<<i + 1<<" : "<<endl;
        e[i].Show();
    }
    cin.get();
    return 0;
}
Миниатюры
Функция, имя которой совпадает с именем класса  
1
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 12:41  [ТС] 9
Кликните здесь для просмотра всего текста
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ОМГ это же конструктор преобразования для класса

Добавлено через 3 минуты
лови вобщем
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
#include <iostream>
using namespace std;
 
class Employer
{
    private:
        int a;
        float b;
    public :
        Employer();       //конструктор по умолчанию
        Employer(int _a, float _b);//коснтруктор преобразования
};
 
Employer::Employer()
{
    a = 0;
    b = 0;
}
 
Employer::Employer(int _a, float _b)
{
    a = _a;
    b = _b;
}
 
int main()
{
    Employer(5, 6.3);
    return 0;
}
http://codepad.org/jwjc6136 и почтиай про ООП

А если я создаю массив элементов -
C++
1
Employer Man[150]
, то как вносить данные?
1
 Аватар для BumerangSP
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
02.07.2013, 12:57 10
Можно так:
C++
1
Employer Man[] = { Employer(1, 2), Employer(3, 4) };
или, если много элементов в массиве, то:

C++
1
2
3
4
5
for (int i=0; i<150; ++i)
   Man[i] = new Employer(1, 2);
// обращаться как Man[0]->, т.е. через стрелку вместо точки. Потом зачистить:
for (int i=0; i<150; ++i)
   delete Man[i];
1
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 13:09  [ТС] 11
Значит, так?
C++
1
2
3
4
5
6
7
8
Employer Man[150];
for(int i=0 ; i<150; i++)
{
Man[i]=new Employer(a, b);
}
...
for (int i=0; i<150; ++i)
   delete Man[i];
0
 Аватар для BumerangSP
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
02.07.2013, 13:26 12
Pepsy, не совсем. Man будет теперь массивом указателей, поэтому там нужна звездочка:
C++
1
Employer *Man[150];
И a, b тут: Man[i]=new Employer(a, b) - это ведь числа, которыми будут инициализированы переменные класса a и b, так? Если да, то верно.

Добавлено через 5 минут
Этот способ хорош тем, что объекты инициализируются сразу при "зарождении". Можно конечно без указателей, но тогда придется пользоваться дополнительными методами, которые будут присваивать значения внутренним переменным.
1
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
02.07.2013, 13:28  [ТС] 13
и последний вопрос - объясните, пожалуйста, создание структуры
C++
1
tm_year
с использованием библиотеки
C++
1
time.h
0
Заблокирован
Автор FAQ
02.07.2013, 14:43 14
Цитата Сообщение от Pepsy Посмотреть сообщение
если я создаю массив элементов -
Employer Man[150]
ну а я что выше показал?
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Employer e[5];
Добавлено через 5 минут
Цитата Сообщение от Pepsy Посмотреть сообщение
tm_year
- это не структура а одно из полей структуры tm * инициализирвоать текущем временем данную структуру можно так
C++
1
2
3
time_t t;
time(&t);
tm * ptm = localtime(&t);
1
02.07.2013, 14:43
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2013, 14:43
Помогаю со студенческими работами здесь

Ошибка "Введенное имя пользователя совпадает с именем, под котором выполнен вход в систему"
Начало здесь: https://www.cyberforum.ru/windows-admin/thread1287974.html Посмотрел серверный...

<Имя класса> не является именем типа
Здравсвуйте. Имеются наброски кода на Qt. Недавно все работало нормально, но после добавления...

Сборка библиотеки и ошибка "fatal error LNK1149: имя выходного файла совпадает с именем входного файла"
при сборке библиотеки возникает такая ошибка LINK : fatal error LNK1149: имя выходного файла...

Обратиться к классу через переменную, в которой имя класса
Приветствую. Есть такой класс public class MyClass { public class ChildClass { ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru