Professional Documents
Culture Documents
GT Oop PDF
GT Oop PDF
TRNG I HC K THUT
KHOA CNG NGH THNG TIN - IN T VIN THNG
GIO TRNH MN HC
NNG, 09/2002
Gio trnh mn Lp trnh hng i tng Trang 2
MC LC
CHNG 2
CC M RNG CA C++
I. LCH S CA C++
Vo nhng nm u thp nin 1980, ngi dng bit C++ vi tn gi "C with Classes" c m t trong
hai bi bo ca Bjarne Stroustrup (thuc AT&T Bell Laboratories) vi nhan "Classes: An Abstract Data
Type Facility for the C Language" v "Adding Classes to C : AnExercise in Language Evolution". Trong
cng trnh ny, tc gi xut khi nim lp, b sung vic kim tra kiu tham s ca hm, cc chuyn i
kiu v mt s m rng khc vo ngn ng C. Bjarne Stroustrup nghin cu m rng ngn ng C nhm t
n mt ngn ng m phng (simulation language) vi nhng tnh nng hng i tng.
Trong nm 1983, 1984, ngn ng "C with Classes" c thit k li, m rng hn ri mt trnh bin
dch ra i. V chnh t , xut hin tn gi "C++". Bjarne Stroustrup m t ngn ng C++ ln u tin
trong bi bo c nhan "Data Abstraction in C". Sau mt vi hiu chnh C++ c cng b rng ri trong
quyn "The C++ Programming Language" ca Bjarne Stroustrup xut hin nh du s hin din thc s
ca C++, ngi lp tnh chuyn nghip t y c mt ngn ng mnh cho cc d n thc tin ca
mnh.
V thc cht C++ ging nh C nhng b sung thm mt s m rng quan trng, c bit l tng v
i tng, lp trnh nh hng i tng.Tht ra cc tng v cu trc trong C++ xut pht vo cc
nm 1970 t Simula 70 v Algol 68. Cc ngn ng ny a ra cc khi nim v lp v n th. Ada l
mt ngn ng pht trin t , nhng C++ khng nh vai tr thc s ca mnh.
II. CC M RNG CA C++
II.1. Cc t kha mi ca C++
b sung cc tnh nng mi vo C, mt s t kha (keyword) mi c a vo C++ ngoi cc t
kha c trong C. Cc chng trnh bng C no s dng cc tn trng vi cc t kha cn phi thay i trc
khi chng trnh c dch li bng C++. Cc t kha mi ny l :
asm catch class delete friend inline
#include <iostream.h>
int main()
{
int I;
for(I = 0; I < 10 ; ++ I) // 0 - 9
cout<<I<<"\n"; // In ra
return 0;
}
return 0;
}
Chng ta chy v d 2.3 , kt qu hnh 2.4.
BI TP
Bi 1: Hy vit li chng trnh sau bng cch s dng li cc dng nhp/xut trong C++.
/* Chng trnh tm mu chung nh nht */
#include <stdio.h>
int main()
{
int a,b,i,min;
printf("Nhap vao hai so:");
scanf("%d%d",&a,&b);
min=a>b?b:a;
for(i = 2;i<min;++i)
if (((a%i)==0)&&((b%i)==0)) break;
if(i==min) {
printf("Khong co mau chung nho nhat");
return 0;
}
printf("Mau chung nho nhat la %d\n",i);
return 0;
}
Bi 2: Vit chng trnh nhp vo s nguyn dng h (2<h<23), sau in ra cc tam gic c
chiu cao l h nh cc hnh sau:
cout << "Constructed with:" << endl << "all arguments defaulted:" << endl << " ";
T1.PrintMilitary(); cout << endl << " ";
T1.PrintStandard();
cout << endl << "Hour specified; Minute and Second defaulted:" << endl << " ";
T2.PrintMilitary(); cout << endl << " ";
T2.PrintStandard();
cout << endl << "Hour and Minute specified; Second defaulted:" << endl << " ";
T3.PrintMilitary(); cout << endl << " ";
T3.PrintStandard(); cout << endl << "Hour, Minute, and Second specified:"<<endl<<" ";
T4.PrintMilitary(); cout << endl << " ";
T4.PrintStandard(); cout << endl << "all invalid values specified:" << endl << " ";
T5.PrintMilitary(); cout << endl << " ";
T5.PrintStandard(); cout << endl;
return 0;
}
Chng trnh v d 3.7 khi to nm i tng ca lp Time ( dng 52). i tng T1 vi ba tham s
ly gi tr mc nh, i tng T2 vi mt tham s c m t, i tng T3 vi hai tham s c m t, i
tng T4 vi ba tham s c m t v i tng T5 vi cc tham s c gi tr khng hp l.
Chng ta chy v d 3.7, kt qu hnh 3.7
Hnh 3.15: Thng bo li khi c gng khi to mt thnh vin d liu const bng php gn
XIV. LP NH L CC THNH VIN CA CC LP KHC
Mt lp c th c cc i tng ca cc lp khc nh cc thnh vin. Khi mt i tng i vo phm vi,
constructor ca n c gi mt cch t ng, v th chng ta cn m t cc tham s c truyn nh th
no ti cc constructor ca i tng thnh vin. Cc i tng thnh vin c xy dng theo th t m
trong chng c khai bo (khng theo th t m chng c lit k trong danh sch b khi to thnh
vin ca constructor) v trc cc i tng ca lp cha ng chng c xy dng.
V d 3.15: Chng trnh sau minh ha cc i tng nh cc thnh vin ca cc i tng khc.
1: #include <iostream.h>
2: #include <string.h>
3:
4: class Date
5: {
6: public:
7: Date(int = 1, int = 1, int = 1900); //Constructor mc nh
8: void Print() const; //In ngy theo dng Month/Day/Year
9: private:
10: int Month; //1-12
11: int Day; //1-31
12: int Year; //Nm bt k
13://Hm tin ch kim tra Day tng thch i vi Month v Year
14: int CheckDay(int);
15: };
16:
17: class Employee
18: {
BI TP
Bi 1: Xy dng lp Stack, d liu bao gm nh stack v vng nh ca stack. Cc thao tc gm:
Khi ng stack.
Kim tra stack c rng khng?
Kim tra stack c y khng?
Push v pop.
Bi 2: Xy dng lp hnh tr Cylinder, d liu bao gm bn knh v chiu cao ca hnh tr. Cc thao
tc gm hm tnh din tch ton phn v th tch ca hnh tr .
Bi 3: Hy xy dng mt lp Point cho cc im trong khng gian ba chiu (x,y,z). Lp cha mt
constructor mc nh, mt hm Negate() bin i im thnh i lng c du m, mt hm Norm() tr
v khong cch t gc v mt hm Print().
Bi 4: Xy dng mt lp Matrix cho cc ma trn bao gm mt constructor mc nh, hm xut ma
trn, nhp ma trn t bn phm, cng hai ma trn, tr hai ma trn v nhn hai ma trn.
Bi 5: Xy dng mt lp Matrix cho cc ma trn vung bao gm mt constructor mc nh, hm xut
ma trn, tnh nh thc v tnh ma trn nghch o.
Bi 6: Xy dng lp Person qun l h tn, nm sinh, im chn mn hc ca tt c cc hc vin
ca lp hc. Cho bit bao nhiu hc vin trong lp c php lm lun vn tt nghip, bao nhiu hc vin
thi tt nghip, bao nhiu ngi phi thi li v tn mn thi li. Tiu chun xt:
Lm lun vn phi c im trung bnh ln hn 7 trong khng c mn no di 5.
Thi tt nghip khi im trung bnh khng ln hn 7 v im cc mn khng di 5.
Thi li c mn di 5.
Bi 7: Xy dng mt lp String. Mi i tng ca lp String s i din mt chui k t. Cc thnh
vin d liu l chiu di chui v chui k t thc. Ngoi constructor v destructor cn c cc phng thc
nh to mt chui vi chiu di cho trc, to mt chui t mt chui c.
Bi 8: Xy dng mt lp Vector lu tr vector gm cc s thc. Cc thnh vin d liu gm:
Kch thc vector.
Mt mng ng cha cc thnh phn ca vector.
Ngoi constructor v destructor, cn c cc phng thc tnh tch v hng ca hai vector, tnh chun
ca vector (theo chun bt k no ).
Bi 9: Xy dng lp Employee gm h tn v chng minh nhn dn. Ngoi constructor cn c
phng thc nhp, xut h tn v chng minh nhn dn ra mn hnh.
. .* :: ?: sizeof
Complex::Complex(double R)
{
Real = R;
Imaginary = 0.0;
}
void Complex::Print()
strcpy(Ptr, S);
}
String::String(const String &Copy)
{
cout << "Copy constructor: " << Copy.Ptr << endl;
Length = Copy.Length;
Ptr = new char[Length + 1];
assert(Ptr != 0);
strcpy(Ptr, Copy.Ptr);
}
//Destructor
String::~String()
{
cout << "Destructor: " << Ptr << endl;
delete [] Ptr;
}
const String &String::operator=(const String &Right)
{
cout << "operator= called" << endl;
if (&Right != this)
{
delete [] Ptr;
Length = Right.Length;
Ptr = new char[Length + 1];
assert(Ptr != 0);
strcpy(Ptr, Right.Ptr);
}
else
cout << "Attempted assignment of a String to itself" << endl;
return *this;
}
return *this;
}
int Date::LeapYear(int Y)
{
if (Y % 400 == 0 || (Y % 100 != 0 && Y % 4 == 0) )
return 1; //Nam nhuan
return 0; //Nam khong nhuan
}
int Date::EndOfMonth(int D)
{
if (Month == 2 && LeapYear(Year))
return D == 29;
return D == Days[Month-1];
}
void Date::HelpIncrement()
{
if (EndOfMonth(Day) && Month == 12) //Het nam
{
Day = 1;
Month = 1;
++Year;
}
else
if (EndOfMonth(Day)) //Het thang
{
Output << MonthName[D.Month-1] << ' '<< D.Day << ", " << D.Year;
return Output;
}
int main()
{
Date D1, D2(12, 27, 1992), D3(0, 99, 8045);
cout << "D1 is " << D1 << endl
<< "D2 is " << D2 << endl
<< "D3 is " << D3 << endl << endl;
cout << "D2 += 7 is " << (D2 += 7) << endl << endl;
D3.SetDate(2, 28, 1992);
cout << " D3 is " << D3 << endl;
cout << "++D3 is " << ++D3 << endl << endl;
Date D4(3, 18, 1969);
cout << "Testing the preincrement operator:" << endl
<< " D4 is " << D4 << endl;
cout << "++D4 is " << ++D4 << endl;
cout << " D4 is " << D4 << endl << endl;
cout << "Testing the postincrement operator:" << endl
<< " D4 is " << D4 << endl;
cout << "D4++ is " << D4++ << endl;
cout << " D4 is " << D4 << endl;
return 0;
}
Bi 1: Xy dng lp Complex cha cc s phc gm cc php ton: +, -, *, /, +=, -=, *=, /=, ==,
!=, >, >=, <, <=.
Bi 4: Xy dng lp Rational cha cc s hu t gm cc php ton +, - , *, /, ==, !=, >, >=, <,
<=.
Cc php so snh.
Cc php so snh.
Hnh 5.2: Mt phn cp k tha cho cc thnh vin ca trng i hc cng ng.
Phn cp k tha quan trng khc l phn cp Shape hnh 5.3.
File POINT.CPP
1: //POINT.CPP
2: //nh ngha cc hm thnh vin ca lp Point
3: #include <iostream.h>
4: #include "point.h"
File POINT.H
1: //POINT.H
2: //nh ngha lp Point
3: #ifndef POINT_H
4: #define POINT_H
5:
6: class Point
7: {
8: public:
9: Point(float A= 0.0, float B= 0.0);
10: ~Point();
11: protected:
12: float X, Y;
13: };
14:
15: #endif
File POINT.CPP
1: //POINT.CPP
2: //nh ngha cc hm thnh vin lp Point
3: #include <iostream.h>
4: #include "point.h"
5:
6: Point::Point(float A, float B)
7: {
8: X = A;
9: Y = B;
10: cout << "Point constructor: "
11: << '[' << X << ", " << Y << ']' << endl;
12: }
13:
14: Point::~Point()
15: {
16: cout << "Point destructor: "
17: << '[' << X << ", " << Y << ']' << endl;
18: }
File CIRCLE.H
1: //CIRCLE.H
File CIRCLE.CPP
1: //CIRCLE.CPP
2: //nh ngha cc hm thnh vin lp Circle
3: #include "circle.h"
4:
5: Circle::Circle(float R, float A, float B): Point(A, B)
6: {
7: Radius = R;
8: cout << "Circle constructor: Radius is "
9: << Radius << " [" << A << ", " << B << ']' << endl;
10: }
11:
12: Circle::~Circle()
13: {
14: cout << "Circle destructor: Radius is "
15: << Radius << " [" << X << ", " << Y << ']' << endl;
16: }
File CT5_4.CPP
1: //CT5_4.CPP
2: //Chng trnh 5.4
3: #include <iostream.h>
4: #include "point.h"
5: #include "circle.h"
6: int main()
7: {
8: {
9: Point P(1.1, 2.2);
10: }
11: cout << endl;
12: Circle C1(4.5, 7.2, 2.9);
13: cout << endl;
14: Circle C2(10, 5, 5);
15: cout << endl;
16: return 0;
17: }
Chng ta chy v d 5.4, kt qu hnh 5.8
Hnh 5.14
y chng ta thy c hai lp c s A cho lp D, v trnh bin dch khng th no nhn bit c vic
truy cp X1 c k tha thng qua B hoc truy cp X1 c k tha thng qua C. khc phc iu ny,
chng ta ch nh mt cch tng minh trong lp D nh sau:
Obj.C::X1=0;
Tuy nhin, y cng ch l gii php c tnh chp v, bi thc cht X1 no trong trng hp no cng
c. Gii php cho vn ny l khai bo A nh lp c s kiu virtual cho c B v C. Khi chng trnh
v d 5.9 c vit li nh sau:
Hnh 6.3
Nh , vi hm sau:
void Show(A* a)
{
a->Print();
}
chng ta c th truyn i tng kiu cho n (A, B, C, D hoc E) m vn gi n ng phung thc
Print() ph hp d kiu ca i tng lc bin dch vn cn cha bit. Vi vai tr "lt ng" nh vy,
phng thc A::Print() c th chng c ni dung g c
class A
{
public:
virtual void Print()
{
}
};
Khi ngi ta gi phng thc A::Print() l phng thc o rng (null virtual function), n chng lm
g ht. Tuy nhin lp A vn l mt lp bnh thng, chng ta c th to ra mt i tng thuc n, c th
truy cp ti phng thc A::Print(). trnh trnh trng v tnh to ra i tng thuc lp ny, ngi ta
thng xy dng lp tru tng, trnh bin dch cho php to ra lp c cc phng thc thun o (pure
virtual function) nh sau:
class A
{
public:
virtual void Print() = 0;
};
BI TP
Bi 1: Hy xy dng cc lp cn thit trong phn cp hnh 5.3 tnh din tch (hoc din tch xung
quanh) v th tch trong lp Shape l lp c s tru tng.
Bi 2: Hy sa i h thng lng ca chng trnh v d 6.6 bng thm cc thnh vin d liu
BrithData (mt i tng kiu Date) v DepartmentCode (kiu int) vo lp Employee. Gi s lng ny
c x l mt ln trn mt thng. Sau , chng trnh tnh bng lng cho mi Employee (tnh a hnh),
cng thm 100.00$ tin thng vo tng s lng ca mi ngi nu y l thng m ngy sinh ca
Employee xy ra.
Bi 3: Ci t cc lp trong cy ph h lp sau:
Hnh 7.1
Tip tc theo hng t di ln, chng ta thit k c cc i tng ph hp nh hnh 7.2
Hnh 7.2
Bng cch ny, chng ta tip tc tm cc c tnh chung cho n tt cng ca cc i tng.
Sau ci t theo hng i tng t trn xung bng cch ci t lp c s chung nht.
Tip tc ci t cc lp dn xut trn c s cc c tnh chung ca tng nhm i tng.
Cho n khi tt c cc dng i tng ca h thng c ci t xong c cy ph h.
V. CC V D
V d 7.1: Tnh tin lng ca cc nhn vin trong c quan theo cc dng khc nhau. Dng ngi lao
ng lnh lng t ngn sch Nh nc c gi l cn b, cng chc (dng bin ch). Dng ngi lao ng
lnh lng t ngn sch ca c quan c gi l ngi lm hp ng. Nh vy h thng chng ta c hai i
tng: bin ch v hp ng.
Hai loi i tng ny c c tnh chung l vin chc lm vic cho c quan. T y c th to
nn lp c s qun l mt vin chc (lp Nguoi) bao gm m s, h tn v lng.
Sau chng ta xy dng cc lp cn li k tha t lp c s trn:
Lp dnh cho cn b, cng chc (lp BienChe) gm cc thuc tnh: h s lng, tin ph cp
chc v.
Lp dnh cho ngi lm hp ng (lp HopDong) gm cc thuc tnh: tin cng lao ng, s
ngy lm vic trong thng, h s vt gi.
Hnh 7.3
File STAFF.H
1: //STAFF.H
2 nh ngha lp BienChe
3: #ifndef STAFF_H
4: #define STAFF_H
5:
5: #include "person.h"
6:
7: class BienChe: public Nguoi
8: {
9: protected:
10: float HeSoLuong;
11: float HeSoPhuCap;
12: public:
13: BienChe();
14: virtual void TinhLuong();
15: virtual void Nhap();
16: };
17:
18: #endif
File STAFF.CPP
1: //STAFF.CPP
2: nh ngha hm thnh vin cho lp BienChe
3: #include "staff.h"
4:
5: BienChe::BienChe()
6: {
7: HeSoLuong=HeSoPhuCap=0;
8: }
9:
10: void BienChe::Nhap()
11: {
12: Nguoi::Nhap();
13: cout<<"He so luong:";
14: cin>>HeSoLuong;
15: cout<<"He so phu cap chu vu:";
16: cin>>HeSoPhuCap;
17: }
18:
19: void BienChe::TinhLuong()
20: {
21: Luong=MUC_CO_BAN*(1.0+HeSoLuong+HeSoPhuCap);
22: }
File CONTRACT.H
1: //CONTRACT.H
2: nh ngha lp HopDong
3: #ifndef CONTRACT_H
4: #define CONTRACT_H
5:
6: #include "person.h"
7:
8: class HopDong : public Nguoi
9: {
10: protected:
11: float TienCong;
12: float NgayCong;
V d 7.2: Gi s cui nm hc cn trao gii thng cho cc sinh vin xut sc v cc ging vin c
nhiu cng trnh khoa hc c cng b trn tp ch. Cc lp trong cy ph h nh hnh 7.5: lp Nguoi
qun l h s c nhn, lp SinhVien qun l v sinh vin v lp GiangVien qun l ging vin.
Lp Nguoi:
D liu h v tn.
Phng thc kim tra kh nng c khen thng. y l phng thc thun o.
Phng thc xut. y l phng thc thun o.
Lp SinhVien:
D liu im trung bnh.
Phng thc kim tra kh nng c khen thng.
Phng thc xut.
Lp GiangVien:
D liu im trung bnh.
Phng thc kim tra kh nng c khen thng.
Phng thc xut.
Hnh 7.5
File PERSON.H
1: //PERSON.H
2: nh ngha lp Nguoi
3: #ifndef PERSON_H
4: #define PERSON_H
5:
6: #include <iostream.h>
7:
8: #define MAX_TEN 50
9:
10: class Nguoi
11: {
12: protected:
13: char HoTen[MAX_TEN];
14: public:
15: Nguoi(char *HT);
16: virtual int DuocKhenThuong() const=0;
17: virtual void Xuat() const=0;
18: };
19:
20: #endif
File PERSON.CPP:
1: //PERSON.CPP
2: nh ngha hm thnh vin cho lp Nguoi
3: #include <string.h>
4: #include "person.h"
5:
6: Nguoi::Nguoi(char *HT)
7: {
8: strcpy(HoTen,HT);
9: }
File STUDENT.H:
1: //STUDENT.H
2: nh ngha lp SinhVien
3: #ifndef STUDENT_H
4: #define STUDENT_H
5:
18: }
File CT7_2.CPP:
1: //CT7_2.CPP
2: //Chng trnh 7.2
3: #include <ctype.h>
4: #include "person.h"
5: #include "student.h"
6: #include "teacher.h"
7:
8: int main()
9: {
10: Nguoi *Ng[100];
11: int N=0;
12: char Chon,Loai;
13: char HoTen[MAX_TEN];
14: do
15: {
16: cout<<"Ho va ten:";
17: cin.getline(HoTen,MAX_TEN);
18: cout<<"Sinh vien hay Giang vien(S/G)? ";
19: cin>>Loai;
20: Loai=toupper(Loai);
21: if (Loai=='S')
22: {
23: float DTB;
24: cout<<"Diem trung binh:";
25: cin>>DTB;
26: Ng[N++]=new SinhVien(HoTen,DTB);
27: }
28: else
29: {
30: int SoBaiBao;
31: cout<<"So bai bao:";
32: cin>>SoBaiBao;
33: Ng[N++]=new GiangVien(HoTen,SoBaiBao);
34: }
35: cout<<"Tiep tuc (C/K)? ";
36: cin>>Chon;
37: Chon=toupper(Chon);
38: cin.ignore();
39: if ((N==100)||(Chon=='K'))
40: break;
41: }
42: while (1);
V d 7.3: Gi s cn phi to cc hnh: hnh trn v hnh ch nht c t theo hai mu red v blue.
Xy dng mt cy ph h qun l cc hnh ny.
Trc ht chng ta cn c lp c s Shape lu tr thng tin chung cho cc hnh, sau l hai lp dn
xut Rectangle v hnh hnh ch nht v Circle v hnh trn nh hnh 7.7
Lp Shape:
Ta tm.
Mu ng bin.
Mu t.
Phng thc thit lp t mu.
Phng thc v hnh. y l phng thc thun
o.
Lp Rectangle:
Chiu di v chiu rng.
Phng thc v hnh.
Lp Circle:
Bn knh.
Phng thc v hnh.
Trong nhp/xut kiu C, tht cn thit cho lp trnh vin cung cp thng tin kiu. C++ xc
nh cc kiu d liu mt cch t ng mt ci tin hay hn C. i khi iu ny l mt tr ngi.
Chng hn, chng ta bit rng mt chui k t l kiu char *. Mc ch ca chng ta in gi tr ca
con tr , ngha l a ch b nh ca k t u tin ca chui . Nhng ton t << c a
nng ha in d liu ca kiu char * nh l chui kt thc k t null. Gii php l p con tr thnh
kiu void *.
V d 8.6: In a ch lu trong mt bin kiu char *
Chng ta chy v d 8.6, kt qu hnh 8.8
Hm istream::read():
Trch cc byte t dng cho n khi gii hn nCount t n hoc cho n khi end- of-file t n. Hm
ny c ch cho dng nhp nh phn.
Hm ostream::write():
Hm istream::gcount():
int gcount();
ios::ate Hm di chuyn con tr file ti end-of-file. Khi byte mi u tin c ghi ln file,
chng lun lun ni thm vo cui, nhng khi cc byte k tip c ghi, chng ghi
vo v tr hin hnh.
ios::in M file c.Vi dng ifstream, vic m file ng nhin c thc hin ch
ny.
ios::out M file c.Vi dng ofstream, vic m file ng nhin c thc hin
ch ny.
ios::trunc Xa file hin c trn a v to file mi cng tn. Cng c hiu y l cht ct file
c, lm cho kch thc ca n bng 0, chun b ghi ni dung mi. Mode ny c p
dng nu ios::out c ch nh v ios::app, ios::ate, v ios::in khng c ch nh.
nProt: c t ch bo v file.
fd: M nhn din file.
BI TP
cout<<MyAbs(-2)<<endl;
cout<<MyAbs(3.5)<<endl;
Trong ln gi th nht, hm MyAbs() c tham s thc l int nn trnh bin dch to ra hm int
MyAbs(int) theo dng ca hm template, ln th hai s to ra hm float MyAbs(float).
Mi tham s hnh thc trong mt nh ngha hm template phi xut hin trong danh sch tham s ca
hm ti thiu mt ln. Tn ca tham s hnh thc ch c th s dng mt ln trong danh sch tham s ca
phn u template.
V d 9.1: S dng hm template in cc gi tr ca mt mng c kiu bt k.
1: //Chng trnh 9.1
2: #include <iostream.h>
3:
4: template<class T>
5: void PrintArray(T *Array, const int Count)
6: {
7: for (int I = 0; I < Count; I++)
8: cout << Array[I] << " ";
9:
10: cout << endl;
11: }
12:
13: int main()
14: {
15: const int Count1 = 5, Count2 = 7, Count3 = 6;
16: int A1[Count1] = {1, 2, 3, 4, 5};
17: float A2[Count2] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7};
18: char A3[Count3] = "HELLO";
19: cout << "Array A1 contains:" << endl;
20: PrintArray(A1, Count1); //Hm template kiu int
21: cout << "Array A2 contains:" << endl;
22: PrintArray(A2, Count2); //Hm template kiu float
23: cout << "Array A3 contains:" << endl;
24: PrintArray(A3, Count3); //Hm template kiu char
25: return 0;
26: }
Chng ta chy v d 9.1, kt qu hnh 9.1
BI TP
Bi 1: Vit hm template tr v gi tr trung bnh ca mt mng, cc tham s hnh thc ca hm ny l
tn mng v kch thc mng.
Bi 2: Ci t hng i template.
Bi 3: Ci t lp template dng cho cy nh phn tm kim (BST).
Bi 4: Ci t lp template cho vector qun l vector cc thnh phn c kiu bt k.
Bi 5: Vit hm template sp xp kiu d liu bt k.
Bi 6: Trong C++, php ton new c dng cp pht b nh, khi khng cp pht c con tr c
gi tr NULL. Hy ci t li cc lp Matrix v Vector trong c b sung thm thnh vin l lp exception
vi tn gi l Memory kim tra vic cp pht ny.