Справочное руководство по 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)
Поделиться:
Популярные книги
Последний из рода Демидовых
Фантастика:
детективная фантастика
попаданцы
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Меч Предназначения
2. Ведьмак
Фантастика:
фэнтези
9.35
рейтинг книги
Случайная жена для лорда Дракона
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
На изломе чувств
Любовные романы:
современные любовные романы
6.83
рейтинг книги
Здравствуй, 1984-й
1. Девяностые
Фантастика:
альтернативная история
6.42
рейтинг книги
Warhammer 40000: Ересь Хоруса. Омнибус. Том II
Фантастика:
эпическая фантастика
5.00
рейтинг книги
Барон ненавидит правила
8. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга IV
4. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Хранители миров
Фантастика:
юмористическая фантастика
5.00
рейтинг книги

Звезда сомнительного счастья
Фантастика:
фэнтези
6.00
рейтинг книги
Я сделаю это сама
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мастер Разума VII
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 15
15. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00