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

Первая программа на С++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Atsa
 Аватар для Atsa
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 69
21.09.2012, 19:10     Первая программа на С++ #1
Не стал искать подобные темы, потому что это мой первый тупой вопрос, коих будет не мало, ибо я пишу свою первую программу на С++.
Вот собственно вопрос:
Хочу оформить ввод и вывод информации, а именно ввод имени и вывод, что-то типа этого - "Рад тебя видеть, <имя>.
Но вот проблема, ввожу имя, нажимаю Enter, на следующей строчке мелькает какой-то текст (видимо "Рад тебя видеть") и программа закрывается. В чем причина данной ошибки и где, собственно, ошибка?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Enter your name, please: ";
    string s;
    cin >> s;
    cout << "I'm glad to see you, " << s << endl;;
    
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
22.09.2012, 00:28     Первая программа на С++ #41
я код не приводил, но я имел в виду именно перегрузку конструктора. И это сработает. Конструктор который есть по умолчанию, вызвать не получится, факт. А вот его перегруженный вариант влегкую(как функцию), через точку.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
22.09.2012, 00:34     Первая программа на С++ #42
Цитата Сообщение от Invader_Zim Посмотреть сообщение
я код не приводил,
пардон, не обратил внимания на автора
Цитата Сообщение от Invader_Zim Посмотреть сообщение
А вот его перегруженный вариант влегкую(как функцию), через точку.
чеж у меня то не получается
ни так
C++
1
2
3
4
5
6
7
8
9
10
11
class B
 {
  int bb;
 public:
     B(){bb=0;};
 };
 
int main()
{
   B b;
   b.B();
ни так
C++
1
2
3
4
5
6
7
8
9
10
11
class B
 {
  int bb;
 public:
     B(){bb=0;};
 };
 
int main()
{
   B b;
   b.B;
Будь добр, приведи код
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
22.09.2012, 01:20     Первая программа на С++ #43
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class B{
    int a;
public:
    B(){
        a=2;
    }
    int Ad(){
        B();
    }
};
 
int main(){
 
    B A;
    A.Ad();
}
Немного загнал, извеняюсь, компилера под рукой не было.

Косвенно получается на УРА

но может это и читерство...


Надо попробывать еше через указатель на функцию.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
22.09.2012, 01:34     Первая программа на С++ #44
Действительно проканало
но это нарушает главный принцип ООП
Объект создается один раз и один раз конструируется
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
22.09.2012, 01:36     Первая программа на С++ #45
ValeryS, а friend? а указатели на закрытые поля? масса вещей нарушает ООП но делает код /*Эпитет подставить*/
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
22.09.2012, 01:39     Первая программа на С++ #46
хотя нет не проканало
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class B
 {
    public: 
     int bb;
 
     B(){bb=0;};
     void Ad(){ B();};
 };
 
int main()
{
   B b;       // bb=0
   b.bb=5;  // bb=5 
   b.Ad();   // bb=5
ничего он не инициализирует заново
он просто где то создал безымянный объект и тут же его похерил
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
22.09.2012, 01:43     Первая программа на С++ #47
ValeryS, обьект существует внутри функции значит!
Курочим компилятор, товарисчи!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
class B
 {
    public: 
     int bb;
 
     B(){bb=0;};
     void Ad(){ this=new B();};
 };
 
int main()
{
   B b;       // bb=0
   b.bb=5;  // bb=5 
   b.Ad();   // bb=5
   std::cout<<b.bb;
   }
А так хотелось...
lvalue required as left operand of assignment
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
22.09.2012, 01:46     Первая программа на С++ #48
вот тебе кусок дизасемблерного кода функции Ad()
Assembler
1
2
3
4
 pop         ecx  
  mov         dword ptr [ebp-8],ecx 
  lea         ecx,[ebp-0D4h] 
  call        B::B (11C1271h)
как видишь
Assembler
1
  lea         ecx,[ebp-0D4h]
создал новый объект
а при оптимизации вообще выбросит этот конструктор
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
22.09.2012, 01:50     Первая программа на С++ #49
ValeryS, Ну а если на этот кусок с адресоваться и сделать что-то типа того маразма что я предложил выше?
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
22.09.2012, 01:53     Первая программа на С++ #50
Цитата Сообщение от Invader_Zim Посмотреть сообщение
ValeryS, Ну а если на этот кусок с адресоваться и сделать что-то типа того маразма что я предложил выше?
чего? явно вызвать конструктор?
без ассемблера и хакерских штук не обойтись

но это нарушает условие "на плюсах явно вызвать конструктор"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2012, 01:55     Первая программа на С++
Еще ссылки по теме:

C++ Первая программа С++
C++ первая программа
Первая программа, синтаксическая ошибка C++

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

Или воспользуйтесь поиском по форуму:
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
22.09.2012, 01:55     Первая программа на С++ #51
ValeryS, Это да, но просто поизвращатся, тоже интересно)
Yandex
Объявления
22.09.2012, 01:55     Первая программа на С++
Ответ Создать тему
Опции темы

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