Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2011, 18:17   #1
wwe2012
Пользователь
 
Аватар для wwe2012
 
Регистрация: 17.01.2011
Сообщений: 51
Вопрос перегрузка конструкторов

Выручайте не получается создать конструктор копировщик и перегрузить конструкторы Перегруженные конструкторы:
- по умолчанию;
- копирования;
- с параметрами по умолчанию
В этом коде:
Код:
class CMyStack
{
friend int GetTopNodeD(CMyStack* myStack);
public:
CMyStack();
~CMyStack();
void Push(int d);
int Pop();
bool isEmpty();
void Print();

CMyStack& operator +(int d);

private:
struct Node
{
int d;
Node *p;
};

Node *top;
};

CMyStack& CMyStack:perator +(int d)
{
Push(d);
return *this;
}

int GetTopNodeD(CMyStack* myStack)
{
if (myStack->top != NULL)
{
return myStack->top->d;
}

return -1;
}

CMyStack::CMyStack():top(NULL)
{

}

void CMyStack::Push(int d)
{
Node *pv = new Node;
pv->d = d;
pv->p = top;
top = pv;
}

int CMyStack::Pop()
{
if (isEmpty())
{
return -1;
}
int temp = top->d;
Node *pv = top;
top = top->p;
delete pv;
return temp;
}


bool CMyStack::isEmpty()
{
return top ? false : true;
}

void CMyStack::Print()
{
while (top)
{
std::cout << Pop() << ' ';
}

std::cout << std::endl;
}

CMyStack::~CMyStack()
{
while (top)
{
Node *pv = top;
top = top->p;
delete pv;
}

}


int _tmain(int argc, _TCHAR* argv[])
{
CMyStack lolo;

lolo + 2 + 3 + 4;

std::cout << GetTopNodeD(&lolo) << std::endl;

lolo.Print();

return 0;
}
Выручите пожалуйста очень надо. Буду блогадарен.

Последний раз редактировалось AlDelta; 28.03.2011 в 12:17. Причина: [CODE]
wwe2012 вне форума Ответить с цитированием
Старый 27.03.2011, 18:37   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Вот так выглядит всё в общем виде:
Код:
class MyClass
{
       public:
            MyClass() {}  // конструктор по умолчанию
            MyClass(int nArg1,...) {}  // конструктор с аргументами
            MyClass(MyClass& m) {} // Копирующий конструктор
           ~MyClass() {} // Деструктор
       protected:
            ////
}
_-Re@l-_ вне форума Ответить с цитированием
Старый 28.03.2011, 09:13   #3
wwe2012
Пользователь
 
Аватар для wwe2012
 
Регистрация: 17.01.2011
Сообщений: 51
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Вот так выглядит всё в общем виде:
Код:
class MyClass
{
       public:
            MyClass() {}  // конструктор по умолчанию
            MyClass(int nArg1,...) {}  // конструктор с аргументами
            MyClass(MyClass& m) {} // Копирующий конструктор
           ~MyClass() {} // Деструктор
       protected:
            ////

}
это перегрзка функций??
wwe2012 вне форума Ответить с цитированием
Старый 28.03.2011, 09:28   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Не совсем.
Вот конструктор по умолчанию:
Код:
MyClass() { // Ваши действия }
Вот конструктор с аргументами(получается, что мы перегружаем конструктор по умолчанию):
Код:
MyClass(// аргументы) { // Ваши действия }
Вот копирующий конструктор:
Код:
MyClass(MyClass& m) { // Создание копии }
А вот деструктор(функция, обратная конструктору, т.е. уничтожающая объект)
Код:
~MyClass() { // Ваши действия }
_-Re@l-_ вне форума Ответить с цитированием
Старый 28.03.2011, 11:44   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2_-Re@l-_
Цитата:
А вот деструктор(функция, обратная конструктору, т.е. уничтожающая объект)
деструктор НЕ уничтожает объект. деструктор вызывается ПЕРЕД уничтожением объекта. и то, на с++ можно написать такую конструкцию, когда объект уничтожится, но деструктор не вызовется.

и опять же, const, const в copy ctor!!
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 28.03.2011, 13:44   #6
wwe2012
Пользователь
 
Аватар для wwe2012
 
Регистрация: 17.01.2011
Сообщений: 51
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Не совсем.
Вот конструктор по умолчанию:
Код:
MyClass() { // Ваши действия }
Вот конструктор с аргументами(получается, что мы перегружаем конструктор по умолчанию):
Код:
MyClass(// аргументы) { // Ваши действия }
Вот копирующий конструктор:
Код:
MyClass(MyClass& m) { // Создание копии }
А вот деструктор(функция, обратная конструктору, т.е. уничтожающая объект)
Код:
~MyClass() { // Ваши действия }
Помаги доделать ато питаюсь созадть конструктор копирование и конструктор с параметрами по умолчанию, не получаються постоянно ощибку выдает помаги елси не сложнор доделать а то мне в пятницу здавать
wwe2012 вне форума Ответить с цитированием
Старый 28.03.2011, 13:48   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
деструктор НЕ уничтожает объект. деструктор вызывается ПЕРЕД уничтожением объекта. и то, на с++ можно написать такую конструкцию, когда объект уничтожится, но деструктор не вызовется.

и опять же, const, const в copy ctor!!
Ну, это я и хотел сказать

А насчёт const в копирующем конструкторе - я знаю. Вот только мне кажется, что wwe2012 это сейчас не очень-то важно - ему бы сейчас с тем разобраться.
_-Re@l-_ вне форума Ответить с цитированием
Старый 28.03.2011, 14:45   #8
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
постоянно ощибку выдает
конкретнее можно?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 28.03.2011, 19:13   #9
wwe2012
Пользователь
 
Аватар для wwe2012
 
Регистрация: 17.01.2011
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
конкретнее можно?
не получаеться создать конструктор копирования и конструктор с параметрами по умолчанию.помаги пожалуйста, у меня времини не осталось
wwe2012 вне форума Ответить с цитированием
Старый 28.03.2011, 19:31   #10
wwe2012
Пользователь
 
Аватар для wwe2012
 
Регистрация: 17.01.2011
Сообщений: 51
Вопрос

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
конкретнее можно?
Вот создал конструктор копирования
Код:
CMyStack :: CMyStack(const CMyStack &rhs)
{
    d=new int;
    p=new Node;
    *d=rhs.Getd();
    *p=*(rhs.p);     
         
         
 }
ВОТ самм класс
Код:
#include <iostream>
#include <conio.h>
using namespace std;
class CMyStack
{
friend int GetTopNodeD(CMyStack* myStack);
public:
CMyStack();
CMyStack(const CMyStack &);
~CMyStack();
void Push(int d);
int Pop();
bool isEmpty();
void Print();

CMyStack& operator +(int d);

private:
struct Node
{
int d;
Node *p;
};

Node *top;
};

CMyStack& CMyStack:perator +(int d)
{
Push(d);
return *this;
}

int GetTopNodeD(CMyStack* myStack)
{
if (myStack->top != NULL)
{
return myStack->top->d;
}

return -1;
}

CMyStack::CMyStack():top(NULL)
{

}

void CMyStack::Push(int d)
{
Node *pv = new Node;
pv->d = d;
pv->p = top;
top = pv;
}

CMyStack :: CMyStack(const CMyStack &rhs)
{
    d=new int;
    p=new Node;
    *d=rhs.Getd();
    *p=*(rhs.p);     
         
         
         }

int CMyStack::Pop()
{
if (isEmpty())
{
return -1;
}
int temp = top->d;
Node *pv = top;
top = top->p;
delete pv;
return temp;
}


bool CMyStack::isEmpty()
{
return top ? false : true;
}

void CMyStack::Print()
{
while (top)
{
std::cout << Pop() << ' ';
}

std::cout << std::endl;
}

CMyStack::~CMyStack()
{
while (top)
{
Node *pv = top;
top = top->p;
delete pv;
}

}

int _tmain(int argc, _TCHAR* argv[])
{
CMyStack lolo;

lolo + 2 + 3 + 4;

std::cout << GetTopNodeD(&lolo) << std::endl;

lolo.Print();
getch();
return 0;
}
Я воше незнаю как создать конструктор с параметрами по умолчанию. Помаги пожалуйста!!!

Последний раз редактировалось wwe2012; 28.03.2011 в 19:48.
wwe2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование конструкторов и деструкторов, С# ~Mi@mi~ Помощь студентам 1 21.11.2010 18:53
сайт с нуля без конструкторов Hammenguei Фриланс 3 26.09.2010 18:42
Перегрузка конструкторов Snowcat Общие вопросы C/C++ 2 11.06.2010 00:05
Применение конструкторов [Java] [CODER] Помощь студентам 2 28.03.2010 21:29