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

Ошибка базового класса строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ программист С++ удалёнка - реально ли? http://www.cyberforum.ru/cpp-beginners/thread1208820.html
Ненмого не по теме, но не нашёл более подходящей темы. Вообщем многие из знакомых веб-программисты работают удалённо, 1 вообще живёт при этом на Бали, но поскольку я работаюв другой области и с...
C++ Запрограммировать на языке С 1.Пользователь вводит два натуральных числа m; n. Заполнить поле m n звёздочками в шахматном порядке 2.Проверить является ли введённое пользователем число палиндромом http://www.cyberforum.ru/cpp-beginners/thread1208816.html
C++ Пример класса с конструктором и деструктором, создание экземпляра класса через конструктор с параметрами
Привести пример класса с конструктором и деструктором, созданием экземпляра класса с помощью конструктора с параметрами.
C++ Cannot convert 'wchar_t *' to 'const char *'
Всем привет, не могу понять почему не работает :( String s=StringReplace(s, String(char(92)),String(char(92))+String(char(92)),TReplaceFlags()<<rfReplaceAll); char *device; device = s; ...
C++ Код Хэмминга декодирование http://www.cyberforum.ru/cpp-beginners/thread1208788.html
привет всем ! я у меня все никак не получается декодирование ! в чем моя ошибка #include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; ...
C++ Реализовать функцию вычисления произведения и частного двух вещественных чисел Помогите пожалуйста подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
16.06.2014, 14:30
superNOOB, вот вариант. Не подумайте что это лучше чем у Forever)
Особенно, важно понять, что конструктор копии нужен для передачи/ возврата и инициализации объектом, поэтому копия всегда отбрасывается и память там перевыделять (удалять прежнюю) не стоит. Поэтому нужно обязательно определить оператор присваивания, где перевыделяя память вы работаете с самим оригиналом и не можете повредить источник.
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<iostream>
#include<cstring>
#include<cstdlib>
 
using namespace std;
 
class C_str{
char *pCh;
 
public:
C_str();
C_str( const char *p);
C_str( const C_str &rhs);
C_str( const char ch);
char *get_str()const;
int get_len()const;
void print_str()const;
const C_str &operator=(const C_str &p);
~C_str();
};
 
//-----
char *C_str::get_str()const{
return pCh;
}
C_str::C_str(){
pCh = new char[1];
pCh[0] = '\0';
}
//----------
C_str::C_str( const char *p){
pCh = new char[strlen(p)+1];
strcpy(pCh, p);
}
//---------
C_str::C_str( const C_str &rhs){
    if(rhs.get_str()){
pCh = new char[strlen(rhs.get_str())+1];
strcpy(pCh, rhs.get_str());
    }else pCh = 0;
}
//---------
const C_str &C_str::operator=(const C_str &rhs){
if(&rhs == this) return *this;
 
if(&rhs && rhs.get_str()){
    if(pCh){
delete []pCh;
pCh=0;
}
pCh = new char[strlen(rhs.get_str())+1];
strcpy(pCh, rhs.get_str());
}
else
pCh=0;
return *this;
}
//--------
C_str::C_str( const char ch){
pCh = new char[2];
pCh[0] = ch;
pCh[1] = '\0';
}
//--------
C_str::~C_str(){
if(pCh)delete []pCh;
}
//-------
void C_str::print_str()const{
if(pCh)cout << pCh << endl;
else
cout << "Null pointer at C_str!" << endl;
}
//---------------
int C_str::get_len()const{
if(pCh)return strlen(pCh);
return 0;
}
int main(){
C_str first_str("qwerty");//преобр к char*
first_str.print_str();
C_str second_str('A');//преобр к ch
second_str.print_str();
second_str = first_str;//operator=
second_str.print_str();
C_str third_str(first_str);//копия
third_str.print_str();
cout << third_str.get_len() << endl;//возвращаем длину (есть только геттер потому как только для чтения)
system("pause");
cout<<endl;
return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru