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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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

Lê Thị Mỹ HạnhKhoa 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 publictemplate 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 bin 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 chuyn kiu 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ế. Vo ra trong C++ Xuất dữ liệu Cú pháp: cout << biểu thức 1<<. . .<< biểu thức N; Trong đó cout đ-ợc định nghĩa tr-ớc nh- một đối t-ợng biểu diễn cho thiết bị xuất chuẩn của C++ là màn hình, cout đ-ợc sử dụng kết hợp với toán tử chèn << để hiển thị giá trị các biểu thức 1, 2, ., N ra màn hình. Nhập dữ liệu Cú pháp: cin >>biến 1>>. . . >>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ểuchar) 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àycó thể làm trôi ph-ơng thức cin.get. Để khắc phục tình trạng trên cần dùngph-ơ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ẫnh-ớng iostream.h Vo 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ấmthập phân, ta sử dụng đồng thời các hàm sau:setiosflags(ios::showpoint);//Bt c hiu showpoint(p)setprecision(p); Các hàm này cần đặt trong toán tử xuất nh- sau:cout<<setiosflags(ios::showpoint)<<setprecision(p); Câu lệnh trên sẽ có hiệu lực đối với tất cả các toán tử xuất tiếp theo cho đếnkhi gặp một câu lệnh định dạng mới. Để quy định độ rộng tối thiểu để hiển thị là k vị trí cho giá trị (nguyên, thực, chuỗi) ta dùng hàm: setw(k) Hàm này cần đặt trong toán tử xuất và nó chỉ có hiệu lực cho một giá trị đ-ợcin gần nhất. Các giá trị in ra tiếp theo sẽ có độ rộng tối thiểu mặc định là 0, nh- vậy câu lệnh:cout<<setw(6)<<Khoa<<CNTTsẽ in ra chuỗi KhoaCNTT. 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 <iostream.h> int X = 5; int main() { int X = 16; cout<< "Bien X ben trong = "<<X<<"\n"; cout<< "Bien X ben ngoai = "<<::X<<"\n"; return 0; } Cp phỏt v gii 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ử newvà delete. Cp phỏt v gii 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 intint *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 So phan tu : ;cin>>n;p = new double[n]if (p == NULL){cout << Loi cap phat bo nho;exit(0);} [...]... trong C+ + cho phép chúng ta c thể định nghĩa lại ch c năng c a c c toán tử đã c sẵn một c ch tiện lợi và tự nhiên hơn rất nhiều.  Điều này gọi là đa năng hóa tốn tử  Ví dụ: Complex operator + (Complex C1 ,Complex C2 ); Complex operator - (Complex C1 ,Complex C2 ); => C3 = C1 + C2 ; C4 = C1 - C2 ;  Như vậy trong C+ +, c c phép toán trên c c giá trị kiểu số ph c đư c th c hiện bằng c c toán... toán tử toán h c chuẩn chứ không phải bằng c c tên hàm như trong C.  Chẳng hạn chúng ta c lệnh sau: C4 = AddComplex (C3 , SubComplex (C1 ,C2 )); thì ở trong C+ +, chúng ta c lệnh tương ứng như sau: C4 = C3 + C1 - C2 ; 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... dịch:  khi gặp một tốn tử làm vi c trên c c kiểu khơng phải là kiểu c sẵn, trình biên dịch sẽ tìm một hàm định nghĩa c a tốn tử nào đó c c c tham số đối sánh với c c toán hạng để dùng. Hm 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. .. đ- c sử dụng làm ®èi c a hµm ®Ĩ cho phÐp hµm truy nhËp ®Õn c c tham biến trong lời gọi hàm 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+ + C p phát và giải phóng... 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... 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... 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. Đa năng hóa (Overloading)  Với ngơn ngữ C+ +, chúng ta c thể... typedef struct Complex{ double Real; double Imaginary; }; Complex SetComplex(double R,double I); Complex AddComplex(Complex C1 ,Complex C2 ); Complex SubComplex(Complex C1 ,Complex C2 ); => C3 = AddComplex (C1 ,C2 ); //Hơi bất tiện !!! C4 = SubComplex (C1 ,C2 );  Điều này trở nên khơng thoải mái vì th c chất thao t c cộng và trừ là c c tốn tử chứ khơng phải là hàm. Đa năng hóa hàm(Function Overloading) ... 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. Đa năng hóa tốn tử (Operators overloading)  Trong C, khi tạo ra một kiểu dữ liệu mới, để th c hiện c c thao t c liên quan đến kiểu dữ liệu đó thường thơng qua c c hàm  Ví dụ:... fabs(double d);  Tất c c c hàm này đều c ng th c hiện một chứa năng nên chúng ta thấy điều này nghịch lý khi phải c ba tên kh c nhau.  C+ + giải quyết điều này bằng c ch cho phép chúng ta tạo ra c c hàm kh c nhau c c ng một tên. Đây chính là đa năng hóa hàm.  Như vậy, trong C+ + chúng ta c thể định nghĩa lại c c hàm trả về trị tuyệt đối để thay thế c c hàm trên như sau : int Myabs(int i); . 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. 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

Ngày đăng: 17/08/2012, 08:39

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan