770 likes | 966 Vues
Pointer. A pointer is a variable that stores an address of another variable of a particular type. A pointer has a variable name just like any other variable and also has a type which designates what kind of variables its contents refer to. type* name type *name. Example 26.
E N D
Pointer • A pointer is a variable that stores an address of another variable of a particular type. • A pointer has a variable name just like any other variable and also has a type which designates what kind of variables its contents refer to. type* name type *name
Example 26 #include <iostream.h> int main() { long *pointer=NULL; long x=10, y=20; pointer=&x; *pointer +=5; cout <<"x = " <<x <<"\t &x= " <<hex <<pointer; cout <<endl; pointer = &y; x=*pointer*10; cout <<endl <<"x= "<<dec <<x <<"\t pointer = " <<hex <<pointer <<"\t *pointer = " <<dec <<*pointer; cout <<endl; return 0; }
Pointer • Pointer is a variable that holds a memory address. • Address of a variable is available by using the address - of operator (&).
Example 27 #include <iostream.h> int main() { unsigned short x=8; unsigned long y=56432; signed long z=-76543; cout <<"x:\t" <<x <<"\t Address of x: \t" <<&x <<"\n"; cout <<"y:\t" <<y <<"\t Address of y: \t" <<&y <<"\n"; cout <<"z:\t" <<z <<"\t Address of z: \t" <<&z <<"\n"; return 0; }
Example 28 #include <iostream.h> int main() { unsigned short int x=8; int y=16; unsigned short int *pointerx=0; pointerx=&x; cout <<"x=" <<x <<"\t pointerx=" <<pointerx; cout <<endl; int *pointery=&y; cout <<"y=" <<y <<"\t pointery=" <<pointery; cout <<endl; return 0; }
Indirection Operator • The indirection operator (*) is called the dereference operator. • The indirection operator mean “the value stored at”. • When a pointer is dereferenced, the value at the address stored by pointer is retrieved.
Example 29 #include <iostream.h> int main() { unsigned short int x=8; int y=16, z; unsigned short int *pointerx=0; pointerx=&x; cout <<"x = " <<x <<"\t pointerx = " <<pointerx; cout <<endl; int *pointery=&y; cout <<"y = " <<y <<"\t pointery = " <<pointery; cout <<endl; z=*pointerx + *pointery; cout <<"z = x + y = " <<z ; cout <<endl <<endl; return 0; }
Debugging • When you have written a program that doesn’t work as it should, the debug facilities enable you to work through a program one step at a time to find out where and how it’s going wrong.
To Display Debug Toolbar • Select Tools from main menu. • Select Customize from Tool menu. • Select Toolbars tab. • Check the box against Build. • Uncheck Build MiniBar if it is checked.
Setting Breakpoint • Place the cursor in the statement where you want execution to stop and click the Insert/Remove Breakpoint button or press F9.
Removing Breakpoint • Place the cursor in the same line as an existing breakpoint and click the Insert/Remove Breakpoint button or press F9.
Starting Debugging • Select Build from main menu. • Select Start Debug from Build menu. • Select one of the four way listed in Start Debug submenu.
GO • The Go option executes a program to the first breakpoint, where execution will halt. • After you have examined all you need to at a breakpoint, selecting Go again will continue execution up to the next breakpoint.
Run to Cursor • It executes the program up to the statement where you left the cursor in the text editor window.
Attach to Process • Enables you to debug a program that is already running. • This option will list the processes that are running on system. • You can select the process you want to debug.
Step Into • Execute your program one statement at a time. • It would also execute all the code for stream output (#include).
Step Over • Execute the statements in function main( ) and jump over all the code used by the stream operations without stopping.
Variable Window • Variable window has three tabs • Auto • Locals • this
Auto, Local and this Tabs • Auto tab shows the variables in use in the current and previous statements. • Local tab shows the values of the variable local to the current function. • this tab is useful as we progress into object-oriented programming.
Viewing Variable in the Edit Window • Position the cursor over the variable for a second. • A tooltip will pop up showing the current value of the variable. • You can highlight a section and rest the cursor over the highlighted area and the tooltip will display the value.
Watching Variables’ Values • Position the cursor in the Text Editor window in the middle of the variable name. • Select QuickWatch from the Debug menu. • If you had any problem the whole name or expression and then select QuickWatch.
Watching Variables’ Values • Variable or expressions can be added to Watch window in two other ways: • type the name of the variable into the Name field in the Watch window • highlight and drag a variable from the Text Editor or Variables window
Window Programming • Microsoft Foundation Classes (MFC). • Single Document Interface (SDI). • Multiple Document Interface (MDI). • AppWizard.
Window Programming With C++ • AppWizard • for creating the basic program code. • ClassWizard • for extending and customizing the classes in programs. • Resource Editor • for editing or creating such things as menus and toolbars.
Classes • A class is a collection of variables often of different types combined with a set of related function. • A class enables you to bundle various parts and various functions into a single collection called object.
Classes • A class can consist of any combination of the variable types and other class types. • The variables in the class are called the member variable or data member. • Function in the class typically manipulate the member variables -- that is, what the objects of a class can do.
Declaring a Class • Use the class keyword followed by { and then list the data members and function members of that class. class car { int door ; int seats ; speed ( ); };
Access Control in a Class • Public • means members of an object of the class can be accessed anywhere within the scope of the class object. • Private • can only be accessed by member functions of a class.
Access Control in a Class • If you omit the access specification altogether, the members have the default attribute, private.
Example 30 #include <iostream.h> class box { public: int length, height, width; }; int main(void) { box box1, box2; int volume1=0, volume2=0; box1.length=10, box1.height=12, box1.width=8; box2.length=14, box2.height=13, box2.width=9; volume1=box1.height*box1.length*box1.width; cout <<endl <<"Volume of Box # 1 is = " <<volume1 <<endl; volume2=box2.height*box2.length*box2.width; cout <<endl <<"Volume of Box # 2 is = " <<volume2 <<endl <<endl; return 0; }
Example 31 #include <iostream.h> class box { public: int length, height, width; int volume(void) { return length*height*width; } }; int main(void) { box box1, box2; int volume1=0, volume2=0; box1.length=10, box1.height=12, box1.width=8; box2.length=14, box2.height=13, box2.width=9; volume1=box1.volume(), volume2=box2.volume(); cout <<endl <<"Volume of Box # 1 is = " <<volume1 <<endl; cout <<endl <<"Volume of Box # 2 is = " <<volume2 <<endl <<endl; return 0; }
Example 32 #include <iostream.h> class box { public: int length, height, width; int volume(void); }; int box::volume(void) { return length*height*width; } int main(void) { box box1, box2; int volume1=0, volume2=0; box1.length=10, box1.height=12, box1.width=8; box2.length=14, box2.height=13, box2.width=9; volume1=box1.volume(), volume2=box2.volume(); cout <<endl <<"Volume of Box # 1 is = " <<volume1 <<endl; cout <<endl <<"Volume of Box # 2 is = " <<volume2 <<endl <<endl; return 0; }
Example 33 #include <iostream.h> class box { public: int length, height, width; int volume(void); }; inline int box::volume(void) { return length*height*width; } int main(void) { box box1, box2; int volume1=0, volume2=0; box1.length=10, box1.height=12, box1.width=8; box2.length=14, box2.height=13, box2.width=9; volume1=box1.volume(), volume2=box2.volume(); cout <<endl <<"Volume of Box # 1 is = " <<volume1 <<endl; cout <<endl <<"Volume of Box # 2 is = " <<volume2 <<endl <<endl; return 0; }
Example 34 #include <iostream.h> class box { public: int length, height, width; box(int l, int h, int w) { length=l, height=h, width=w; } int volume(void) { return length*height*width; } }; int main(void) { box box1(10, 12, 8), box2(14, 13, 9); cout <<endl <<"Volume of Box # 1 is = " <<box1.volume() <<endl; cout <<endl <<"Volume of Box # 2 is = " <<box2.volume() <<endl <<endl; return 0; }
Example 35 #include <iostream.h> class box { public: int length, height, width; box(int l=0, int h=0, int w=0) { length=l, height=h, width=w; } int volume(void) { return length*height*width; } }; int main(void) { box box1(10, 12, 8), box2(14, 13, 9); cout <<endl <<"Volume of Box # 1 is = " <<box1.volume() <<endl; cout <<endl <<"Volume of Box # 2 is = " <<box2.volume() <<endl <<endl; return 0; }
Example 36 #include <iostream.h> class box { public: box(int l=0, int h=0, int w=0) { length=l, height=h, width=w; } int volume(void) { return length*height*width; } private: int length, height, width; };
Example 36 (continue) int main(void) { box box1(10, 12, 8), box2(6,8,9); //box2.width=12; cout <<endl <<"Volume of Box # 1 is = " <<box1.volume() <<endl; cout <<endl <<"Volume of Box # 2 is = " <<box2.volume() <<endl <<endl; return 0; } If we uncomment the box2.width=12 what will happen? Why?
friend Functions • friend functions are selected functions which are not member of a class to, nonetheless, be able access all members of a class. • friend functions are not members of the class, and therefore the access attributes do not apply to them. • friend are just ordinary global functions with special privileges.
Example 37 #include <iostream.h> class box { public: box(int l=1, int h=1, int w=1) { length=l, height=h, width=w; } int volume(void) { return length*height*width; } private: int length, height, width; friend int boxsurfacearea(box area); };
Example 37 (continue) int boxsurfacearea(box area) { return 2*(area.length*area.width+area.length*area.height+area.height*area.width); } int main(void) { box box1(10, 12, 8), box2(6,8,9); cout <<endl <<"Volume of Box # 1 is = " <<box1.volume() <<endl; cout <<endl <<"Surface area of Box # 1 is = " <<boxsurfacearea(box1) <<endl; cout <<endl <<"Volume of Box # 2 is = " <<box2.volume() <<endl; cout <<endl <<"Surface area of Box # 2 is = " <<boxsurfacearea(box2) <<endl <<endl; return 0; }
Example 38 #include <iostream.h> class box { public: box(int l=1, int h=1, int w=1) { length=l, height=h, width=w; } int volume(void) { return length*height*width; } int compare(box xbox) { return this-> volume()>xbox.volume(); } private: int length, height, width; };
Example 38 (continue) int main(void) { int x=0, y=0, z=0; cout <<"length of box # 2 is = "; cin >>x; cout <<endl <<"height of box # 2 is = "; cin >>y; cout <<endl <<"width of box # 2 is = "; cin >>z; box box1(10, 12, 8), box2(x,y,z); if(box2.compare(box1)) cout <<endl <<"Box # 1 is smaller than Box # 2"; else cout <<endl <<"Box # 1 is equal to or larger than Box # 2"; cout <<endl <<endl; return 0; }
Exercises • Write the code that declares a class called employee with these data members: • age • sex • years of service • salary
Exercises • Write a program with the employee class that creates ten employees; sets their age, sex, years of service, and salary; and prints their values.
Essential Pieces of a Window Program • WinMain ( ) • which is called by windows at the start of execution of the program. • WndProc ( ) or WindowProc ( ) • which will be called by the operating system whenever a message is to be passed to your application’s window. (procedure for each window class you’ve defined)
WinMain ( ) • The function WinMain ( ) does any initialization and sets up the window or windows that will be the primary interface to the user.
WindowProc ( ) • The function WindowProc ( ) handles all the messages that aren’t queued, which will include those initiated in the message loop in WinMain ( ).
WindowProc ( ) • WindowProc ( ) is where you code your application-specific response to each window message which should handle all the communications with the user by processing the windows message generated by user action.
MFC • MFC are a set of predefined classes upon which windows programming with Visual C++ is built. • MFC represent an object - oriented approach to windows programming that encapsulates the windows API.
MFC • All the classes in MFC have names beginning with with C. • Cview • Cdocument • Data member of an MFC class are prefixed with m_ . • m_lpCmdLine