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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
softrix
0 / 0 / 0
Регистрация: 05.04.2008
Сообщений: 48
#1

ООП перегрузка в классе! - C++

13.04.2008, 19:45. Просмотров 935. Ответов 2
Метки нет (Все метки)

Помогите решить:

Нужно сделать чтобы корректно работало следующее:
1. MyString s1("AAA"), s2;
2. s2=
"VVV";

С первым все ок, а второе глючит, вызывается каждый раз деструктор и ничего не заностися

Вот конструктор:

MyString::MyString( constchar* pStr )
{
m_pStr = newchar[strlen( pStr ) + 1];
strcpy( m_pStr, pStr );

}

Как реализовать второй пункт не понятно. Помогите разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2008, 19:45     ООП перегрузка в классе!
Посмотрите здесь:

Перегрузка в классе - C++
Реализую класс векторов с перегрузкой: #pragma once #include <stdio.h> #include <iostream> #include <string> #include <stdlib.h> ...

ООП перегрузка операторов - C++
#include <iostream> #include <windows.h> using namespace std; const int vector_size = 8; // размер вектора class vector { //...

Перегрузка операторов в классе - C++
Здравствуйте. Написал класс: template <class T> class LIST { private: T* listP; uint lSize; public:

Перегрузка функций в классе - C++
Дано задание: 1.реализовать в классе работу стека; 2.применить перегрузку функций. Первое я реализовал без проблем, а вот со вторым...

Перегрузка оператора '=' в классе - C++
#include <iostream> #include <cstring> using std::cout; using std::endl; class CMessage { public: ...

Перегрузка операции < в классе - C++
Хочу создать шаблон внутри класса Прототип template &lt;typename T&gt; bool operator&lt;(T &amp;); Определение template &lt;typename T&gt; ...

Перегрузка операторов в классе - C++
Привет всем снова! Пожалуста помотрите на класс, представьте что все нужные заголовки включены. class Point { public: Point(void) :...

Сложение строк, перегрузка + в классе - C++
Есть вот класс String как мне перегрузить + что бы я мог использовать так a = &quot;Hello&quot;+ b; тоисть мне объекту b нужно сложить со строкой...

Перегрузка оператора ==, в классе Матрица - C++
#ifndef MATRIX_H #define MATRIX_H template &lt;class T&gt; class Matrix { public: Matrix(int Rows, int Cols); ~Matrix(); ...

Перегрузка операции сложения в классе - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; using namespace std; class Project { private: int id; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SVEN
10 / 10 / 1
Регистрация: 25.03.2008
Сообщений: 50
14.04.2008, 17:56     ООП перегрузка в классе! #2
Код
[SIZE=2][COLOR=#0000ff]
#include[/COLOR][/SIZE][SIZE=2][COLOR=#800000]<cstring>
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]class[/COLOR][/SIZE][SIZE=2] MyString
{
[/SIZE][SIZE=2][COLOR=#0000ff]char[/COLOR][/SIZE][SIZE=2]* m_pStr;
[/SIZE][SIZE=2][COLOR=#0000ff]public[/COLOR][/SIZE][SIZE=2]:
MyString([/SIZE][SIZE=2][COLOR=#0000ff]char[/COLOR][/SIZE][SIZE=2]* pStr )
{
m_pStr = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]char[/COLOR][/SIZE][SIZE=2][strlen( pStr ) + 1]; 
strcpy(m_pStr, pStr);
}
~MyString()
{
[/SIZE][SIZE=2][COLOR=#0000ff]delete[/COLOR][/SIZE][SIZE=2] [] m_pStr;
}
MyString()
{
m_pStr=[/SIZE][SIZE=2][COLOR=#800000]'\0'[/COLOR][/SIZE][SIZE=2];
}
};
MyString s2;
MyString s3=[/SIZE][SIZE=2][COLOR=#800000]"VVV"[/COLOR][/SIZE][SIZE=2];
[/SIZE]
Для реализации второго пункта ты не должна присваивать уже созданному объекту нового значения, просто создавай новый объект с нужным значением! И добавь в свой класс конструктор по умолчанию как в примере--совет.
Linear
0 / 0 / 0
Регистрация: 11.05.2014
Сообщений: 6
11.05.2014, 14:39     ООП перегрузка в классе! #3
реализуйте конструктор копирования и оператор =
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru