Professional Documents
Culture Documents
OOP2-C To C++
OOP2-C To C++
Lê Thị Mỹ Hạnh
Khoa CNTT
Đại học Bách khoa – Đại học Đà Nẵng
Từ khóa
Để bổ sung các tính năng mới vào C, một số từ khóa (keyword)
mới đã được đưa vào C++ ngoài các từ khóa có trong C.
Các chương trình bằng C nào sử dụng các tên trùng với các từ
khóa cần phải thay đổi trước khi chương trình được dịch lại
bằng C++.
Các từ khóa mới này là :
asm catch class delete friend inline
new operator private protected public
template this throw try virtual
1
18/01/2010
Chú thích
chó thÝch trong C b»ng /* ... */
C++ ®a thªm chó thÝch b¾t ®Çu b»ng //.
kiÓu chó thÝch /*...*/ ®îc dïng cho c¸c khèi chó thÝch lín
gåm nhiÒu dßng,
cßn kiÓu // ®îc dïng cho c¸c chó thÝch trªn mét dßng.
VÝ dô: /* §©y lµ
chó thÝch trong C */
// §©y lµ chó thÝch trong C++
2
18/01/2010
3
18/01/2010
4
18/01/2010
5
18/01/2010
delete [ ] contrá;
VÝ dô: Thu håi vïng nhí ®· cÊp ph¸t cho hai biÕn con trá p
vµ a (víi a lµ mét m¶ng mét chiÒu)
delete p;
delete [ ] a;
Hàm inline
ViÖc tæ chøc ch¬ng tr×nh thµnh c¸c hµm cã u ®iÓm ch¬ng tr×nh
®îc chia thµnh c¸c ®¬n vÞ ®éc lËp, ®iÒu nµy gi¶m ®îc kÝch thíc
ch¬ng tr×nh, v× mçi ®o¹n chong tr×nh thùc hiÖn nhiÖm vô cña hµm
®îc thay b»ng lêi gäi hµm.
Tuy nhiªn hµm còng cã nhîc ®iÓm lµ lµm lµ chËm tèc ®é thùc hiÖn
ch¬ng tr×nh v× ph¶i thùc hiÖn mét sè thao t¸c cã tÝnh thñ tôc mçi khi
gäi hµm nh: cÊp ph¸t vïng nhí cho c¸c ®èi sè vµ biÕn côc bé,
truyÒn d÷ liÖu cña c¸c tham sè cho c¸c ®èi, gi¶i phãng vïng nhí
tríc khi tho¸t khái hµm.
C++ cho kh¶ n¨ng kh¾c phôc ®îc nhîc ®iÓm nãi trªn b»ng c¸ch
dïng hµm néi tuyÕn. §Ó biÕn mét hµm thµnh hµm néi tuyÕn ta viÕt
thªm tõ khãa inline vµo tríc khai b¸o nguyªn mÉu hµm.
Chó ý:
Trong mäi trêng hîp, tõ khãa inline ph¶i xuÊt hiÖn tríc c¸c lêi gäi
hµm th× tr×nh biªn dÞch míi biÕt cÇn xö lý hµm theo kiÓu inline.
ChØ nªn khai b¸o lµ hµm inline khi hµm cã néi dung ®¬n gi¶n.
Hµm ®Ö qui kh«ng thÓ lµ hµm inline.
6
18/01/2010
Hàm inline - Ví dụ
#include <iostream.h> #include <iostream.h>
#include <conio.h> #include <conio.h>
inline int f(int a,int b); inline int f(int a,int b)
void main() {
{
return a*b;
int s ;
s=f(5,6); }
cout<<s; void main()
getch(); {
} int s ;
inline int f(int a,int b) s=f(5,6);
{ cout<<s;
return a*b; getch();
} }
7
18/01/2010
8
18/01/2010
9
18/01/2010
10
18/01/2010
NÕu ch¬ng tr×nh sö dông khai b¸o nguyªn mÉu hµm th× c¸c ®èi sè mÆc
®Þnh cÇn ®îc khëi g¸n trong nguyªn mÉu hµm, kh«ng ®îc khëi g¸n khëi
g¸n l¹i cho c¸c ®èi mÆc ®Þnh trong dßng ®Çu cña ®Þnh nghÜa hµm.
Khi x©y dùng hµm, nÕu kh«ng khai b¸o nguyªn mÉu, th× c¸c ®èi mÆc ®Þnh
®îc khëi g¸n trong dßng ®Çu cña ®Þnh nghÜa hµm.
Chó ý:
§èi víi c¸c hµm cã ®èi sè mÆc ®Þnh th× lêi gäi hµm cÇn viÕt theo quy ®Þnh:
C¸c tham sè v¾ng mÆt trong lêi gäi hµm t¬ng øng víi c¸c ®èi sè mÆc ®Þnh
cuèi cïng (tÝnh tõ tr¸i sang ph¶i),
MyFunc(); // Lỗi do tham số a không có giá trị mặc định
MyFunc(1);// OK, các tham số b, c và d lấy giá trị mặc định
MyFunc(5, 7); // OK, các tham số c và d lấy giá trị mặc định
MyFunc(5, 7, , 8); // Lỗi do các tham số bị bỏ phải liên tiếp nhau
11
18/01/2010
12
18/01/2010
13
18/01/2010
14
18/01/2010
15