
Các mở rộng của C++ so với C
lượt xem 4
download

Để 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++.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Các mở rộng của C++ so với 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
- 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++
- Khai báo biến Trong C tÊt c¶ c¸c c©u lÖnh khai b¸o biÕn, m¶ng côc bé ph¶i ®Æt t¹i ®Çu khèi. vÞ trÝ khai b¸o vµ vÞ trÝ sö dông cña biÕn cã thÓ ë c¸ch kh¸ xa nhau, ®iÒu nµy g©y khã kh¨n trong viÖc kiÓm so¸t ch-¬ng tr×nh. C++ ®· kh¾c phôc nh-îc ®iÓm nµy b»ng c¸ch cho phÐp c¸c lÖnh khai b¸o biÕn cã thÓ ®Æt bÊt kú chç nµo trong ch-¬ng tr×nh tr-íc khi c¸c biÕn ®-îc sö dông. Ph¹m vi ho¹t ®éng cña c¸c biÕn kiÓu nµy lµ khèi trong ®ã biÕn ®-îc khai b¸o.
- Phép chuyển kiểu Trong C phÐp chuyÓn kiÓu ®-îc viÕt theo có ph¸p: (kiÓu) biÓu thøc C++ cßn sö dông mét phÐp chuyÓn kiÓu míi: KiÓu(biÓu thøc) PhÐp chuyÓn kiÓu nµy cã d¹ng nh- mét hµm sè chuyÓn kiÓu ®ang ®-îc gäi. C¸ch chuyÓn kiÓu nµy th-êng ®-îc sö dông trong thùc tÕ.
- Vào ra trong C++ XuÊt d÷ liÖu Có ph¸p: cout >biÕn N; To¸n tö cin ®-îc ®Þnh nghÜa tr-íc nh- mét ®èi t-îng biÓu diÔn cho thiÕt bÞ vµo chuÈn cña C++ lµ bµn phÝm, cin ®-îc sö dông kÕt hîp víi to¸n tö trÝch >> ®Ó nhËp d÷ liÖu tõ bµn phÝm cho c¸c biÕn 1, 2, ..., N. Chó ý: §Ó nhËp mét chuçi kh«ng qu¸ n ký tù vµ l-u vµo m¶ng mét chiÒu a (kiÓu char) cã thÓ dïng hµm cin.get nh- sau: cin.get(a,n); To¸n tö nhËp cin>> sÏ ®Ó l¹i ký tù chuyÓn dßng ’\n’ trong bé ®Öm. Ký tù nµy cã thÓ lµm tr«i ph-¬ng thøc cin.get. §Ó kh¾c phôc t×nh tr¹ng trªn cÇn dïng ph-¬ng thøc cin.ignore(1) ®Ó bá qua mét ký tù chuyÓn dßng. §Ó sö dông c¸c lo¹i to¸n tö vµ ph-¬ng thøc nãi trªn cÇn khai b¸o tËp tin dÉn h-íng iostream.h
- Vào ra trong C++ (2) §Þnh d¹ng khi in ra mµn h×nh §Ó quy ®Þnh sè thùc ®-îc hiÓn thÞ ra mµn h×nh víi p ch÷ sè sau dÊu chÊm thËp ph©n, ta sö dông ®ång thêi c¸c hµm sau: setiosflags(ios::showpoint);//Bật cờ hiệu showpoint(p) setprecision(p); C¸c hµm nµy cÇn ®Æt trong to¸n tö xuÊt nh- sau: cout
- Toán tử định phạm vi (::) Toán tử định phạm vi (scope resolution operator) ký hiệu là ::, nó được dùng truy xuất một phần tử bị che bởi phạm vi hiện thời. Ví dụ: #include int X = 5; int main() { int X = 16; cout
- Cấp phát và giải phóng bộ nhớ Trong C để cÊp ph¸t bé nhí dïng: malloc(), calloc() vµ ®Ó gi¶i phãng bé nhí ®-îc cÊp ph¸t dïng hµm free(). C++ ®-a thªm mét c¸ch thøc míi ®Ó thùc hiÖn viÖc cÊp ph¸t vµ gi¶i phãng bé nhí b»ng c¸ch dïng hai to¸n tö new vµ delete.
- Cấp phát và giải phóng bộ nhớ To¸n tö new ®Ó cÊp ph¸t bé nhí new Tªn kiÓu ; hoÆc new Tªn kiÓu(Gi¸ trÞ khëi t¹o); Trong ®ã Tªn kiÓu lµ kiÓu d÷ liÖu cña biÕn con trá, nã cã thÓ lµ: c¸c kiÓu d÷ liÖu chuÈn nh- int, float, double, char,... hoÆc c¸c kiÓu do ng-êi lËp tr×nh ®Þnh nghÜa nh- m¶ng, cÊu tróc, líp,... §Ó cÊp ph¸t bé nhí cho m¶ng mét chiÒu, dïng có ph¸p nh- sau: BiÕn con trá = new kiÓu[n]; Trong ®ã n lµ sè nguyªn d-¬ng x¸c ®Þnh sè phÇn tö cña m¶ng. VÝ dô: float *p = new float; //cÊp ph¸t bé nhí cho biÕn con trá p cã kiÓu int int *a = new int[100]; //cÊp ph¸t bé nhí ®Ó l-u tr÷ m¶ng mét chiÒu a gåm 100 phÇn tö Khi sö dông to¸n tö new ®Ó cÊp ph¸t bé nhí, nÕu kh«ng ®ñ bé nhí ®Ó cÊp ph¸t, new sÏ tr¶ l¹i gi¸ trÞ NULL cho con trá. §o¹n ch-¬ng tr×nh sau minh häa c¸ch kiÓm tra lçi cÊp ph¸t bé nhí: double *p; int n; cout>n; p = new double[n] if (p == NULL) { cout
- Cấp phát và giải phóng bộ nhớ To¸n tö delete ®Ó gi¶i phãng bé nhí To¸n tö delete thay cho hµm free() cña C, nã cã có ph¸p nh- sau: delete contrá ; §Ó gi¶i phãng vïng nhí ®· cÊp ph¸t cho m¶ng 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 ch-ong 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.
- Hàm inline - Ví dụ #include #include #include #include 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
- Biến tham chiếu Trong C cã 2 lo¹i biÕn lµ: BiÕn gi¸ trÞ dïng ®Ó chøa d÷ liÖu (nguyªn, thùc, ký tù,...) và biÕn con trá dïng ®Ó chøa ®Þa chØ. C¸c biÕn nµy ®Òu ®-îc cung cÊp bé nhí vµ cã ®Þa chØ. C++ cho phÐp sö dông lo¹i biÕn thø ba lµ biÕn tham chiÕu. BiÕn tham chiÕu lµ mét tªn kh¸c (bÝ danh) cho biÕn ®· ®Þnh nghÜa tr-íc ®ã. Có ph¸p khai b¸o biÕn tham chiÕu nh- sau: KiÓu &BiÕn tham chiÕu = BiÕnHằng; BiÕn tham chiÕu cã ®Æc ®iÓm lµ nã ®-îc dïng lµm bÝ danh cho mét biÕn (kiÓu gi¸ trÞ) nµo ®ã vµ sö dông vïng nhí cña biÕn nµy.
- Biến tham chiếu VÝ dô: Víi c©u lÖnh: int a, &tong=a; th× tong lµ bÝ danh cña biÕn a vµ biÕn tong dïng chung vïng nhí cña biÕn a. Lóc nµy, trong mäi c©u lÖnh, viÕt a hay viÕt tong ®Òu cã ý nghÜa nh- nhau, v× ®Òu truy nhËp ®Õn cïng mét vïng nhí. Mäi sù thay ®æi ®èi víi biÕn tong ®Òu ¶nh h-ëng ®èi víi biÕn a vµ ng-îc l¹i. VÝ dô: int a, &tong =a; tong =1; //a=1 cout
- Hằng tham chiếu Có ph¸p khai b¸o h»ng tham chiÕu nh- sau: const KiÓu d÷ liÖu &Hằng = BiÕn/H»ng; VÝ dô: int n = 10; const int &m = n; const int &p = 123; H»ng tham chiÕu cã thÓ tham chiÕu ®Õn mét biÕn hoÆc mét h»ng. Chó ý: BiÕn tham chiÕu vµ h»ng tham chiÕu kh¸c nhau ë chç: kh«ng cho phÐp dïng h»ng tham chiÕu ®Ó lµm thay ®æi gi¸ trÞ cña vïng nhí mµ nã tham chiÕu. VÝ dô: int y=12, z; const int &p = y //H»ng tham chiÕu p tham chiÕu ®Õn biÕn y p = p + 1; //Sai, tr×nh biªn dÞch sÏ th«ng b¸o lçi H»ng tham chiÕu cho phÐp sö dông gi¸ trÞ chøa trong mét vïng nhí, nh-ng kh«ng cho phÐp thay ®æi gi¸ trÞ nµy. H»ng tham chiÕu th-êng ®-îc sö dông lµm ®èi sè cña hµm ®Ó cho phÐp sö dông gi¸ trÞ cña c¸c tham sè trong lêi gäi hµm, nh-ng tr¸nh lµm thay ®æi gi¸ trÞ tham sè.
- Truyền tham số cho hàm theo tham chiếu Trong C chØ cã mét c¸ch truyÒn d÷ liÖu cho hµm lµ truyÒn theo theo gi¸ trÞ. Ch-¬ng tr×nh sÏ t¹o ra c¸c b¶n sao cña c¸c tham sè thùc sù trong lêi gäi hµm vµ sÏ thao t¸c trªn c¸c b¶n sao nµy chø kh«ng xö lý trùc tiÕp víi c¸c tham sè thùc sù. C¬ chÕ nµy rÊt tèt nÕu khi thùc hiÖn hµm trong ch-¬ng tr×nh kh«ng cÇn lµm thay ®æi gi¸ trÞ cña biÕn gèc. Tuy nhiªn, nhiÒu khi ta l¹i muèn nh÷ng tham sè ®ã thay ®æi khi thùc hiÖn hµm trong ch-¬ng tr×nh. C++ cung cÊp thªm c¸ch truyÒn d÷ liÖu cho hµm theo tham chiÕu b»ng c¸ch dïng ®èi lµ tham chiÕu. C¸ch lµm nµy cã -u diÓm lµ kh«ng cÇn t¹o ra c¸c b¶n sao cña c¸c tham sè, do dã tiÕt kiÖm bé nhí vµ thêi gian ch¹y m¸y. MÆt kh¸c, hµm nµy sÏ thao t¸c trùc tiÕp trªn vïng nhí cña c¸c tham sè, do ®ã dÔ dµng thay ®æi gi¸ trÞ c¸c tham sè khi cÇn.
- Truyền tham số theo tham chiếu – Ví dụ void Hoanvi(double &x,double &y) { double tam = x; x = y; y = tam; } void sapxep(double *a,int n) { for(int i=0;i
- Hàm trả về là một tham chiếu C++ cho phÐp hµm tr¶ vÒ gi¸ trÞ lµ mét tham chiÕu, lóc nµy ®Þnh nghÜa cña hµm cã d¹ng nh- sau : KiÓu &Tªn hµm(...) { //th©n hµm return ; } Trong tr-êng hîp nµy biÓu thøc ®-îc tr¶ l¹i trong c©u lÖnh return ph¶i lµ tªn cña mét biÕn x¸c ®Þnh tõ bªn ngoµi hµm, bëi v× khi ®ã míi cã thÓ sö dông ®-îc gi¸ trÞ cña hµm. Khi ta tr¶ vÒ mét tham chiÕu ®Õn mét biÕn côc bé khai b¸o bªn trong hµm, biÕn côc bé nµy sÏ bÞ mÊt ®i khi kÕt thóc thùc hiÖn hµm. Do vËy tham chiÕu cña hµm sÏ kh«ng cßn ý nghÜa n÷a. V× vËy, nÕu hµm tr¶ vÒ lµ tham chiÕu ®Õn biÕn côc bé th× biÕn côc bé nµy ph¶i khai b¸o static. VÝ dô: int &myfunc(){ static int x= 10; return x; }
- Hàm trả về là một tham chiếu Khi gi¸ trÞ tr¶ vÒ cña hµm lµ tham chiÕu, ta cã thÓ gÆp c¸c c©u lÖnh g¸n h¬i kh¸c th-êng, trong ®ã vÕ tr¸i lµ mét lêi gäi hµm chø kh«ng ph¶i lµ tªn cña mét biÕn. VÝ dô: #include int X = 4; int & MyFunc(); int main() { cout

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Layout Manager trong C Sharp
4 p |
238 |
66
-
Macromedia Flash - Tạo hiệu ứng hiển thị chữ
9 p |
146 |
39
-
Windows Applications - Windows Forms – Phần 1
10 p |
119 |
30
-
Quản lý Outlook 2007 thông qua Group Policies – Phần 2
12 p |
139 |
25
-
Bài giảng Kỹ thuật lập trình hướng đối tượng với C++ - Hoàng Kim Bảng
163 p |
157 |
20
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ C++) - Chương 2: Giới thiệu về ngôn ngữ lập trình C++
49 p |
144 |
7
-
Chương I: Giới thiệu về lập trình hướng đối tượng
351 p |
59 |
6
-
Bài giảng Lập trình hướng đối tượng: Bài 2 - Phạm Thị Bích Vân
54 p |
54 |
3
-
Bài giảng Nhập môn về lập trình - Chương 3: Tổ chức dữ liệu trong chương trình
26 p |
39 |
3


Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
