intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Các mở rộng của C++ so với C

Chia sẻ: Nguyễn Văn Biên | Ngày: | Loại File: PDF | Số trang:29

122
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Để 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++.

Chủ đề:
Lưu

Nội dung Text: Các mở rộng của C++ so với C

  1. Lê Thị Mỹ Hạnh Khoa CNTT Đại học Bách khoa – Đại học Đà Nẵng
  2. 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
  3. 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++
  4. 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.
  5. 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Õ.
  6. 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
  7. 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
  8. 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
  9. 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.
  10. 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
  11. 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;
  12. 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.
  13. 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
  14. 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.
  15. 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
  16. 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è.
  17. 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.
  18. 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
  19. 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; }
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2