cpp:exception_rethrow
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cpp:exception_rethrow [2019/05/06 08:41] – [Παραλλαγή του παραπάνω παραδείγματος] gthanos | cpp:exception_rethrow [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 17: | Line 17: | ||
| int **raster; | int **raster; | ||
| public: | public: | ||
| - | PPMImage(char *filename) { | + | |
| - | string str; | + | ~PPMImage(); |
| - | unsigned char red, green, blue; | + | }; |
| - | ifstream in(filename); | + | |
| - | if(!in.is_open()) { | + | PPMImage::PPMImage(char *filename) { |
| - | std:: | + | string str; |
| - | throw fex; | + | unsigned char red, green, blue; |
| - | } | + | ifstream in(filename); |
| - | try { | + | if(!in.is_open()) { |
| - | in >> str; | + | std:: |
| - | in >> str; | + | throw fex; |
| - | width = atoi(str.c_str()); | + | } |
| - | in >> str; | + | try { |
| - | height = atoi(str.c_str()); | + | in >> str; |
| - | in >> str; | + | in >> str; |
| - | colordepth = atoi(str.c_str()); | + | width = atoi(str.c_str()); |
| - | raster = new int*[height]; | + | in >> str; |
| - | for(int row=0; row< | + | height = atoi(str.c_str()); |
| - | raster[row] = new int[width]; | + | in >> str; |
| - | for(int row=0; row< | + | colordepth = atoi(str.c_str()); |
| - | for(int col=0; col< | + | raster = new int*[height]; |
| - | | + | for(int row=0; row< |
| - | red = (unsigned char) atoi(str.c_str()); | + | raster[row] = new int[width]; |
| - | | + | for(int row=0; row< |
| - | green = (unsigned char) atoi(str.c_str()); | + | for(int col=0; col< |
| - | | + | |
| - | blue = (unsigned char) atoi(str.c_str()); | + | red = (unsigned char) atoi(str.c_str()); |
| - | raster[row][col] = 0; | + | |
| - | raster[row][col] = (red << 16) | (green << 8) | blue; | + | green = (unsigned char) atoi(str.c_str()); |
| - | } | + | |
| + | blue = (unsigned char) atoi(str.c_str()); | ||
| + | raster[row][col] = 0; | ||
| + | raster[row][col] = (red << 16) | (green << 8) | blue; | ||
| } | } | ||
| - | } | ||
| - | catch(std:: | ||
| - | cerr << " | ||
| - | in.close(); | ||
| - | throw ex; | ||
| } | } | ||
| } | } | ||
| - | | + | |
| - | ~PPMImage() { | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| + | } | ||
| | | ||
| - | int **getRaster() { return raster; | + | PPMImage:: |
| - | + | if(raster == nullptr) | |
| - | }; | + | |
| + | for(int row=0; row< | ||
| + | delete | ||
| + | | ||
| + | | ||
| + | } | ||
| int main(int argc, char *argv[]) { | int main(int argc, char *argv[]) { | ||
| Line 70: | Line 73: | ||
| try{ | try{ | ||
| imgptr = new PPMImage(argv[1]); | imgptr = new PPMImage(argv[1]); | ||
| + | delete imgptr; | ||
| } | } | ||
| catch(ios_base:: | catch(ios_base:: | ||
| - | cerr << "File '" | + | cerr << "File '" |
| } | } | ||
| catch(bad_alloc &ex) { | catch(bad_alloc &ex) { | ||
| Line 78: | Line 82: | ||
| if (imgptr!=nullptr) { | if (imgptr!=nullptr) { | ||
| cerr << " | cerr << " | ||
| - | if(imgptr-> | ||
| - | cerr << " | ||
| - | delete imgptr-> | ||
| - | } | ||
| - | else { | ||
| - | cerr << " | ||
| - | } | ||
| delete imgptr; | delete imgptr; | ||
| } | } | ||
| - | else { | + | else |
| cerr << " | cerr << " | ||
| - | } | ||
| } | } | ||
| - | delete imgptr; | ||
| return 0; | return 0; | ||
| } | } | ||
| Line 105: | Line 100: | ||
| </ | </ | ||
| - | Από τον παραπάνω κώδικα μπορούμε να συμπεράνουμε τα εξής: | + | Από τον παραπάνω κώδικα μπορούμε να συμπεράνουμε |
| - | - Εφόσον παράγεται ένα // | + | |
| - | - Εάν εφαρμόσω τον τελεστή **delete** σε ένα δείκτη που έχει την τιμή **nullptr**, | + | |
| ===== Παραλλαγή του παραπάνω παραδείγματος ===== | ===== Παραλλαγή του παραπάνω παραδείγματος ===== | ||
cpp/exception_rethrow.1557132063.txt.gz · Last modified: 2019/05/06 07:41 (external edit)
