Справочное руководство по C++
Шрифт:
{
if (p-›n › 1) {
p-›n--;
p = new srep;
}
else if (p-›n == 1)
delete p-›s;
p-›s = new char[strlen(s)+1];
strcpy(p-›s, s);
p-›n = 1;
return *this;
}
string& string::operator=(string& x)
{
x.p-›n++;
if (--p-›n == 0) {
delete p-›s;
delete p;
}
p = x.p;
return *this;
}
ostream& operator‹‹(ostream& s, string& x)
{
return s ‹‹ x.p-›s ‹‹ " [" ‹‹ x.p-›n ‹‹ "]\n";
}
istream& operator››(istream& s, string& x)
{
char buf[256];
s››buf;
x = buf;
cout ‹‹ "echo: " ‹‹ x ‹‹ "\n";
return s;
}
void error(char* p)
{
cout ‹‹ p ‹‹ "\n";
exit(1);
}
char& string::operator[](int i)
{
if (i‹0 || strlen(p-›s)‹i) error("index out of range");
return p-›s[i];
}
main
{
string x[100];
int n;
cout ‹‹ "here we go\n";
for (n = 0; cin››x[n]; n++) {
string y;
if (n==100) error("too many strings");
cout ‹‹ (y = x[n]);
if (y=="done") break;
}
cout ‹‹ "here we go back again\n";
for (int i=n-1; 0‹=i; i--) cout ‹‹ x[i];
}
b7_2_8.cxx
#include ‹stream.hxx›
struct employee {
friend class manager;
employee* next;
char* name;
short department;
virtual void print;
};
struct manager: employee {
employee* group;
short level;
void print;
};
void employee::print
{
cout ‹‹ name ‹‹ "\t" ‹‹ department ‹‹ "\n";
}
void manager::print
{
employee::print;
cout ‹‹ "\tlevel " ‹‹ level ‹‹ "\n";
}
void f(employee* ll)
{
for (; ll; ll=ll-›next) ll-›print;
}
main
{
employee e;
e.name = "J. Brown";
e.department = 1234;
e.next = 0;
manager m;
m.name = "J. Smith";
m.department = 1234;
m.level = 2;
m.next = &e;
f(&m);
}
b7_7.cxx
#include ‹stream.hxx›
struct base { base; };
struct derived: base { derived; };
base:: base
{
cout ‹‹ "\tbase 1: this=" ‹‹ long(this) ‹‹ "\n";
if (this == 0) this = (base*)27;
cout ‹‹ "\tbase 2: this=" ‹‹ long(this) ‹‹ "\n";
}
derived::derived
{
cout ‹‹ "\tderived 1: this=" ‹‹ long(this) ‹‹ "\n";
if (this == 0) this = (derived*)43;
cout ‹‹ "\tderived 2: this=" ‹‹ long(this) ‹‹ "\n";
}
main
{
cout ‹‹ "base b;\n";
base b;
cout ‹‹ "new base;\n";
new base;
cout ‹‹ "derived d;\n";
derived d;
cout ‹‹ "new derived;\n";
new derived;
cout ‹‹ "new derived;\n";
new derived;
cout ‹‹ "at the end\n";
}
b8_3_3.cxx
#include ‹xstream.hxx›
extern void exit(int);
void error(char* s, char* s2)
Поделиться:
Популярные книги
Мимик нового Мира 8
7. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 4.0
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Младший научный сотрудник 2
2. МНС
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Измена. Мой непрощённый
2. Самойловы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха
Любовные романы:
современные любовные романы
5.00
рейтинг книги
"Малыш"
2. Девочка с придурью
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Кодекс Охотника. Книга XVIII
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Невеста напрокат
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Отмороженный 3.0
3. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Законы Рода. Том 3
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Виконт. Книга 1. Второе рождение
1. Псевдоним `Испанец`
Фантастика:
фэнтези
боевая фантастика
попаданцы
6.67
рейтинг книги
Мерзавец
3. Братья Майоровы
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
5.00
рейтинг книги
Совпадений нет
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Сбой Системы Мимик! Академия
2. Сбой Системы!
Фантастика:
боевая фантастика
юмористическая фантастика
5.71