Các mở rộng của C++ so với C
Số trang: 29
Loại file: pdf
Dung lượng: 1.51 MB
Lượt xem: 1
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Để 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++.
Nội dung trích xuất từ tài liệu:
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ẵngTừ 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 inlinenew operator private protected publictemplate this throw try virtualChú 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.hVà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: coutToá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; coutCấ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() {{ ...
Nội dung trích xuất từ tài liệu:
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ẵngTừ 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 inlinenew operator private protected publictemplate this throw try virtualChú 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.hVà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: coutToá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; coutCấ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() {{ ...
Tìm kiếm theo từ khóa liên quan:
lập trình C++ kỹ thuật máy tính lập trình máy tính code lập trình kinh nghiệm lập trình lập trình hướng đối tượngGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 270 0 0 -
Bài giảng Tin học lớp 11 bài 1: Giới thiệu ngôn ngữ lập trình C#
15 trang 234 0 0 -
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 210 0 0 -
101 trang 199 1 0
-
15 trang 198 0 0
-
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 177 0 0 -
Thiết kế mạch logic bằng Verilog - HDL
45 trang 159 0 0 -
65 trang 159 0 0
-
Bài giảng Công nghệ phần mềm - Chương 2: Quy trình xây dựng phần mềm
36 trang 149 0 0 -
69 trang 146 0 0