0% found this document useful (0 votes)
379 views12 pages

Cheat Sheet of C++

1. The document discusses various C++ programming concepts including functions, classes, variables, data types, arithmetic operations, and control flow statements like if/else. 2. It provides examples of defining functions, classes with methods and constructors, declaring and initializing different variable types, and performing arithmetic and logical operations. 3. Key concepts covered include functions, overloaded functions, recursive functions, classes, inheritance, constructors, destructors, static variables and methods, and control flow with if/else statements.

Uploaded by

greatdsa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
379 views12 pages

Cheat Sheet of C++

1. The document discusses various C++ programming concepts including functions, classes, variables, data types, arithmetic operations, and control flow statements like if/else. 2. It provides examples of defining functions, classes with methods and constructors, declaring and initializing different variable types, and performing arithmetic and logical operations. 3. Key concepts covered include functions, overloaded functions, recursive functions, classes, inheritance, constructors, destructors, static variables and methods, and control flow with if/else statements.

Uploaded by

greatdsa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

1

2
3 // Tells the compiler iostream library which contains the function cout
4 #include <iostream>
5
6 // Allows us to use vectors
7 #include <vector>
8
9 // Allows us to use strings
10 #include <string>
11
12 // Allow us to work with files
13 #include <fstream>
14
15 // Allows functions in the std namespace to be used without their prefix
16 // std::cout becomes cout
17 using namespace std;
18
19 // ---------- FUNCTIONS ----------
20 // The function has return type, function name and attributes with
21 // their data types
22 // The attribute data types must match the value passed in
23 // This data is passed by value
24 // You can define default values to attributes as long as they come last
25 // This is known as a function prototype
26 int addNumbers(int firstNum, int secondNum = 0){
27
28 int combinedValue = firstNum + secondNum;
29
30 return combinedValue;
31
32 }
33
34 // An overloaded function has the same name, but different attributes
35 int addNumbers(int firstNum, int secondNum, int thirdNum){
36
37 return firstNum + secondNum + thirdNum;
38
39 }
40
41 // A recursive function is one that calls itself
42
43 int getFactorial(int number){
44
45 int sum;
46 if(number == 1) sum = 1;
47 else sum = (getFactorial(number - 1) * number);
48 return sum;
49
50 // getFactorial(2) [Returns 2] * 3
51 // getFactorial(1) [Returns 1] * 2 <This value goes above>
52 // 2 * 3 = 6
53
54 }
55
56 // Doesn't have a return type so use void
57 // Since I'm getting a pointer use int*
58 // Refer to the referenced variable with *age
59 void makeMeYoung(int* age){
60
61 cout << "I used to be " << *age << endl;
62 *age = 21;
63
64 }
65
66 // A function that receives a reference can manipulate the value globally
67 void actYourAge(int& age){
68
69 age = 39;
70
71 }
72
73 // ---------- END OF FUNCTIONS ----------
74
75 // ---------- CLASSES ----------
76 // classes start with the name class
77
78 class Animal
79 {
80
81 // private variables are only available to methods in the class
82 private:
83 int height;
84 int weight;
85 string name;
86
87 // A static variable shares the same value with every object in the class
88 static int numOfAnimals;
89
90 // Public variables can be accessed by anything with access to the object
91 public:
92 int getHeight(){return height;}
93 int getWeight(){return weight;}
94 string getName(){return name;}
95 void setHeight(int cm){ height = cm; }
96 void setWeight(int kg){ weight = kg; }
97 void setName(string dogName){ name = dogName; }
98
99 // Declared as a prototype
100 void setAll(int, int, string);
101
102 // Declare the constructor
103 Animal(int, int, string);
104
105 // Declare the deconstructor
106 ~Animal();
107
108 // An overloaded constructor called when no data is passed
109 Animal();
110
111 // protected members are available to members of the same class and
112 // sub classes
113
114 // Static methods aren't attached to an object and can only access
115 // static member variables
116 static int getNumOfAnimals() { return numOfAnimals; }
117
118 // This method will be overwritten in Dog
119 void toString();
120
121 };
122
123 int Animal::numOfAnimals = 0;
124
125 // Define the protoype method setAll
126 void Animal::setAll(int height, int weight, string name){
127
128 // This is used to refer to an object created of this class type
129 this -> height = height;
130 this -> weight = weight;
131 this -> name = name;
132 Animal::numOfAnimals++;
133
134 }
135
136 // A constructor is called when an object is created
137 Animal::Animal(int height, int weight, string name) {
138
139 this -> height = height;
140 this -> weight = weight;
141 this -> name = name;
142
143 }
144
145 // The destructor is called when an object is destroyed
146 Animal::~Animal() {
147
148 cout << "Animal " << this -> name << " destroyed" << endl;
149
150 }
151
152 // A constructor called when no attributes are passed
153 Animal::Animal() {
154 numOfAnimals++;
155 }
156
157 // This method prints object info to screen and will be overwritten
158 void Animal::toString(){
159
160 cout << this -> name << " is " << this -> height << " cms tall and "
161 << this -> weight << " kgs in weight" << endl;
162
163 }
164
165 // We can inherit the variables and methods of other classes
166 class Dog : public Animal{
167
168 private:
169 string sound = "Woof";
170 public:
171 void getSound() { cout << sound << endl; }
172
173 // Declare the constructor
174 Dog(int, int, string, string);
175
176 // Declare the default constructor and call the default superclass
177 // constructor
178 Dog() : Animal(){};
179
180 // Overwrite toString
181 void toString();
182
183 };
184
185 // Dog constructor passes the right attributes to the superclass
186 // constructor and then handles the attribute bark that remains
187 Dog::Dog(int height, int weight, string name, string bark) :
188 Animal(height, weight, name){
189
190 this -> sound = bark;
191
192 }
193
194 // toString method overwritten
195 void Dog::toString(){
196
197 // Because the attributes were private in Animal they must be retrieved
198 // by called the get methods
199 cout << this -> getName() << " is " << this -> getHeight() <<
200 " cms tall and " << this -> getWeight() << " kgs in weight and says " <<
201 this -> sound << endl;
202
203 }
204
205 // ---------- END OF CLASSES ----------
206
207 // This is where execution begins. Attributes can be sent to main
208 int main() {
209
210 // cout outputs text and a carriage return with endl
211 // Statements must end with a semicolon
212 // Strings must be surrounded by "
213 // << sends the text via standard output to the screen
214 cout << "Hello Internet" << endl;
215
216 // ---------- VARIABLES / DATA TYPES ----------
217 // Variables start with a letter and can contain letters, numbers and _
218 // They are case sensitive
219
220 // A value that won't change is a constant
221 // Starts with const and it should be uppercase
222 const double PI = 3.1415926535;
223
224 // chars can contain 1 character that are surrounded with ' and is one byte in size
225 char myGrade = 'A';
226
227 // bools have the value of (true/1) or (false/0)
228 bool isHappy = true;
229
230 // ints are whole numbers
231 int myAge = 39;
232
233 // floats are floating point numbers accurate to about 6 decimals
234 float favNum = 3.141592;
235
236 // doubles are floating point numbers accurate to about 15 digits
237 double otherFavNum = 1.6180339887;
238
239 // You can output a variable value like this
240 cout << "Favorite Number " << favNum << endl;
241
242 // Other types include
243 // short int : At least 16 bits
244 // long int : At least 32 bits
245 // long long int : At least 64 bits
246 // unsigned int : Same size as signed version
247 // long double : Not less then double
248
249 // You can get the number of bytes for a data type with sizeof
250
251 cout << "Size of int " << sizeof(myAge) << endl;
252 cout << "Size of char " << sizeof(myGrade) << endl;
253 cout << "Size of bool " << sizeof(isHappy) << endl;
254 cout << "Size of float " << sizeof(favNum) << endl;
255 cout << "Size of double " << sizeof(otherFavNum) << endl;
256
257 int largestInt = 2147483647;
258
259 cout << "Largest int " << largestInt << endl;
260
261 // ---------- ARITHMETIC ----------
262 // The arithmetic operators are +, -, *, /, %, ++, --
263
264 cout << "5 + 2 = " << 5+2 << endl;
265 cout << "5 - 2 = " << 5-2 << endl;
266 cout << "5 * 2 = " << 5*2 << endl;
267 cout << "5 / 2 = " << 5/2 << endl;
268 cout << "5 % 2 = " << 5%2 << endl;
269
270 int five = 5;
271 cout << "5++ = " << five++ << endl;
272 cout << "++5 = " << ++five << endl;
273 cout << "5-- = " << five-- << endl;
274 cout << "--5 = " << --five << endl;
275
276 // Shorthand assignment operators
277 // a += b == a = a + b
278 // There is also -=, *=, /=, %=
279
280 // Order of Operation states * and / is performed before + and -
281
282 cout << "1 + 2 - 3 * 2 = " << 1 + 2 - 3 * 2 << endl;
283 cout << "(1 + 2 - 3) * 2 = " << (1 + 2 - 3) * 2 << endl;
284
285 // ---------- CASTING ----------
286 // You convert from one data type to another by casting
287 // char, int, float, double
288
289 cout << "4 / 5 = " << 4 / 5 << endl;
290 cout << "4 / 5 = " << (float) 4 / 5 << endl;
291
292 // ---------- IF STATEMENT ----------
293 // Executes different code depending upon a condition
294
295 // Comparison operators include ==, !=, >, <, >=, <=
296 // Will return true (1) if the comparison is true, or false (0)
297
298 // Logical operators include &&, ||, !
299 // Used to test 2 or more conditionals
300
301 int age = 70;
302 int ageAtLastExam = 16;
303 bool isNotIntoxicated = true;
304
305 if((age >= 1) && (age < 16)){
306 cout << "You can't drive" << endl;
307 } else if(!isNotIntoxicated){
308 cout << "You can't drive" << endl;
309 } else if(age >= 80 && ((age > 100) || ((age - ageAtLastExam) > 5))){
310 cout << "You can't drive" << endl;
311 } else {
312 cout << "You can drive" << endl;
313 }
314
315 // ---------- SWITCH STATEMENT ----------
316 // switch is used when you have a limited number of possible options
317
318 int greetingOption = 2;
319
320 switch(greetingOption){
321
322 case 1 :
323 cout << "bonjour" << endl;
324 break;
325
326 case 2 :
327 cout << "Hola" << endl;
328 break;
329
330 case 3 :
331 cout << "Hallo" << endl;
332 break;
333
334 default :
335 cout << "Hello" << endl;
336 }
337
338 // ---------- TERNARY OPERATOR ----------
339 // Performs an assignment based on a condition
340 // variable = (condition) ? if true : if false
341
342 int largestNum = (5 > 2) ? 5 : 2;
343
344 cout << "The biggest number is " << largestNum << endl;
345
346 // ---------- ARRAYS ----------
347 // Arrays store multiple values of the same type
348
349 // You must provide a data type and the size of the array
350 int myFavNums[5];
351
352 // You can declare and add values in one step
353 int badNums[5] = {4, 13, 14, 24, 34};
354
355 // The first item in the array has the label (index) of 0
356 cout << "Bad Number 1: " << badNums[0] << endl;
357
358 // You can create multidimensional arrays
359 char myName[5][5] = {{'D','e','r','e','k'},{'B','a','n','a','s'}};
360
361 cout << "2nd Letter in 2nd Array: " << myName[1][1] << endl;
362
363 // You can change a value in an array using its index
364 myName[0][2] = 'e';
365
366 cout << "New Value " << myName[0][2] << endl;
367
368 // ---------- FOR LOOP ----------
369 // Continues to execute code as long as a condition is true
370
371 for(int i = 1; i <= 10; i++){
372
373 cout << i << endl;
374
375 }
376
377 // You can also cycle through an array by nesting for loops
378 for(int j = 0; j < 5; j++){
379
380 for(int k = 0; k < 5; k++){
381 cout << myName[j][k];
382 }
383
384 cout << endl;
385
386 }
387
388 // ---------- WHILE LOOP ----------
389 // Use a while loop when you don't know ahead of time when a loop will end
390
391 // Generate a random number between 1 and 100
392 int randNum = (rand() % 100) + 1;
393
394 while(randNum != 100){
395
396 cout << randNum << ", ";
397
398 // Used to get you out of the loop
399 randNum = (rand() % 100) + 1;
400
401 }
402
403 cout << endl;
404
405 // You can do the same as the for loop like this
406 // Create an index to iterate out side the while loop
407 int index = 1;
408
409 while(index <= 10){
410
411 cout << index << endl;
412
413 // Increment inside the loop
414 index++;
415
416 }
417
418 // ---------- DO WHILE LOOP ----------
419 // Used when you want to execute what is in the loop at least once
420
421 // Used to store a series of characters
422 string numberGuessed;
423 int intNumberGuessed = 0;
424
425 do {
426 cout << "Guess between 1 and 10: ";
427
428 // Allows for user input
429 // Pass the source and destination of the input
430 getline (cin,numberGuessed);
431
432 // stoi converts the string into an integer
433 intNumberGuessed = stoi(numberGuessed);
434 cout << intNumberGuessed << endl;
435
436 // We'll continue looping until the number entered is 4
437 } while (intNumberGuessed != 4);
438
439 cout << "You Win" << endl;
440
441 // ---------- STRINGS ----------
442 // The string library class provides a string object
443 // You must always surround strings with "
444 // Unlike the char arrays in c, the string object automatically resizes
445
446 // The C way of making a string
447 char happyArray[6] = {'H', 'a', 'p', 'p', 'y', '\0'};
448
449 // The C++ way
450 string birthdayString = " Birthday";
451
452 // You can combine / concatenate strings with +
453 cout << happyArray + birthdayString << endl;
454
455 string yourName;
456 cout << "What is your name? ";
457 getline (cin,yourName);
458
459 cout << "Hello " << yourName << endl;
460
461 double eulersConstant = .57721;
462 string eulerGuess;
463 double eulerGuessDouble;
464 cout << "What is Euler's Constant? ";
465 getline (cin,eulerGuess);
466
467 // Converts a string into a double
468 // stof() for floats
469 eulerGuessDouble = stod(eulerGuess);
470
471 if(eulerGuessDouble == eulersConstant){
472
473 cout << "You are right" << endl;
474
475 } else {
476
477 cout << "You are wrong" << endl;
478
479 }
480
481 // Size returns the number of characters
482 cout << "Size of string " << eulerGuess.size() << endl;
483
484 // empty tells you if string is empty or not
485 cout << "Is string empty " << eulerGuess.empty() << endl;
486
487 // append adds strings together
488 cout << eulerGuess.append(" was your guess") << endl;
489
490 string dogString = "dog";
491 string catString = "cat";
492
493 // Compare returns a 0 for a match, 1 if less than, -1 if greater then
494 cout << dogString.compare(catString) << endl;
495 cout << dogString.compare(dogString) << endl;
496 cout << catString.compare(dogString) << endl;
497
498 // assign copies a value to another string
499 string wholeName = yourName.assign(yourName);
500 cout << wholeName << endl;
501
502 // You can get a substring as well by defining the starting index and the
503 // number of characters to copy
504 string firstName = wholeName.assign(wholeName, 0, 5);
505 cout << firstName << endl;
506
507 // find returns the index for the string your searching for starting
508 // from the index defined
509 int lastNameIndex = yourName.find("Banas", 0);
510 cout << "Index for last name " << lastNameIndex << endl;
511
512 // insert places a string in the index defined
513 yourName.insert(5, " Justin");
514 cout << yourName << endl;
515
516 // erase will delete 6 characters starting at index 7
517 yourName.erase(6,7);
518 cout << yourName << endl;
519
520 // replace 5 characters starting at index 6 with the string Maximus
521 yourName.replace(6,5,"Maximus");
522 cout << yourName << endl;
523
524 // ---------- VECTORS ----------
525 // Vectors are like arrays, but their size can change
526
527 vector <int> lotteryNumVect(10);
528
529 int lotteryNumArray[5] = {4, 13, 14, 24, 34};
530
531 // Add the array to the vector starting at the beginning of the vector
532 lotteryNumVect.insert(lotteryNumVect.begin(), lotteryNumArray, lotteryNumArray+3);
533
534 // Insert a value into the 5th index
535 lotteryNumVect.insert(lotteryNumVect.begin()+5, 44);
536
537 // at gets the value in the specified index
538 cout << "Value in 5 " << lotteryNumVect.at(5) << endl;
539
540 // push_back adds a value at the end of a vector
541 lotteryNumVect.push_back(64);
542
543 // back gets the value in the final index
544 cout << "Final Value " << lotteryNumVect.back() << endl;
545
546 // pop_back removes the final element
547 lotteryNumVect.pop_back();
548
549 // front returns the first element
550 cout << "First Element " << lotteryNumVect.front() << endl;
551
552 // back returns the last element
553 cout << "Last Element " << lotteryNumVect.back() << endl;
554
555 // empty tells you if the vector is empty
556 cout << "Vector Empty " << lotteryNumVect.empty() << endl;
557
558 // size returns the total number of elements
559 cout << "Number of Vector Elements " << lotteryNumVect.size() << endl;
560
561 // ---------- FUNCTIONS ----------
562 // Functions allow you to reuse and better organize your code
563
564 cout << addNumbers(1) << endl;
565
566 // You can't access values created in functions (Out of Scope)
567 // cout << combinedValue << endl;
568
569 cout << addNumbers(1, 5, 6) << endl;
570
571 cout << "The factorial of 3 is " << getFactorial(3) << endl;
572
573 // ---------- FILE I/O ----------
574 // We can read and write to files using text or machine readable binary
575
576 string steveQuote = "A day without sunshine is like, you know, night";
577
578 // Create an output filestream and if the file doesn't exist create it
579 ofstream writer("stevequote.txt");
580
581 // Verify that the file stream object was created
582 if(! writer){
583
584 cout << "Error opening file" << endl;
585
586 // Signal that an error occurred
587 return -1;
588
589 } else {
590
591 // Write the text to the file
592 writer << steveQuote << endl;
593
594 // Close the file
595 writer.close();
596
597 }
598
599 // Open a stream to append to whats there with ios::app
600 // ios::binary : Treat the file as binary
601 // ios::in : Open a file to read input
602 // ios::trunc : Default
603 // ios::out : Open a file to write output
604 ofstream writer2("stevequote.txt", ios::app);
605
606 if(! writer2){
607
608 cout << "Error opening file" << endl;
609
610 // Signal that an error occurred
611 return -1;
612
613 } else {
614
615 writer2 << "\n- Steve Martin" << endl;
616 writer2.close();
617
618 }
619
620 char letter;
621
622 // Read characters from a file using an input file stream
623 ifstream reader("stevequote.txt");
624
625 if(! reader){
626
627 cout << "Error opening file" << endl;
628 return -1;
629
630 } else {
631
632 // Read each character from the stream until end of file
633 for(int i = 0; ! reader.eof(); i++){
634
635 // Get the next letter and output it
636 reader.get(letter);
637 cout << letter;
638
639 }
640
641 cout << endl;
642 reader.close();
643
644 }
645
646 // ---------- EXCEPTION HANDLING ----------
647 // You can be prepared for potential problems with exception handling
648
649 int number = 0;
650
651 try{
652
653 if(number != 0){
654 cout << 2/number << endl;
655 } else throw(number);
656
657 }
658 catch(int number){
659
660 cout << number << " is not valid input" << endl;
661
662 }
663
664 // ---------- POINTERS ----------
665 // When data is stored it is stored in an appropriately sized box based
666 // on its data type
667
668 int myAge = 39;
669 char myGrade = 'A';
670
671 cout << "Size of int " << sizeof(myAge) << endl;
672 cout << "Size of char " << sizeof(myGrade) << endl;
673
674 // You can reference the box (memory address) where data is stored with
675 // the & reference operator
676
677 cout << "myAge is located at " << &myAge << endl;
678
679 // A pointer can store a memory address
680 // The data type must be the same as the data referenced and it is followed
681 // by a *
682
683 int* agePtr = &myAge;
684
685 // You can access the memory address and the data
686 cout << "Address of pointer " << agePtr << endl;
687
688 // * is the dereference or indirection operator
689 cout << "Data at memory address " << *agePtr << endl;
690
691 int badNums[5] = {4, 13, 14, 24, 34};
692 int* numArrayPtr = badNums;
693
694 // You can increment through an array using a pointer with ++ or --
695 cout << "Address " << numArrayPtr << " Value " << *numArrayPtr << endl;
696 numArrayPtr++;
697 cout << "Address " << numArrayPtr << " Value " << *numArrayPtr << endl;
698
699 // An array name is just a pointer to the array
700 cout << "Address " << badNums << " Value " << *badNums << endl;
701
702 // When you pass a variable to a function you are passing the value
703 // When you pass a pointer to a function you are passing a reference
704 // that can be changed
705
706 makeMeYoung(&myAge);
707
708 cout << "I'm " << myAge << " years old now" << endl;
709
710 // & denotes that ageRef will be a reference to the assigned variable
711 int& ageRef = myAge;
712
713 cout << "ageRef : " << ageRef << endl;
714
715 // It can manipulate the other variables data
716 ageRef++;
717
718 cout << "myAge : " << myAge << endl;
719
720 // You can pass the reference to a function
721 actYourAge(ageRef);
722
723 cout << "myAge : " << myAge << endl;
724
725 // When deciding on whether to use pointers or references
726 // Use Pointers if you don't want to initialize at declaration, or if
727 // you need to assign another variable
728 // otherwise use a reference
729
730 // ---------- CLASSES & OBJECTS ----------
731 // Classes are the blueprints for modeling real world objects
732 // Real world objects have attributes, classes have members / variables
733 // Real world objects have abilities, classes have methods / functions
734 // Classes believe in hiding data (encapsulation) from outside code
735
736 // Declare a Animal type object
737 Animal fred;
738
739 // Set the values for the Animal
740 fred.setHeight(33);
741 fred.setWeight(10);
742 fred.setName("Fred");
743
744 // Get the values for the Animal
745 cout << fred.getName() << " is " << fred.getHeight() << " cms tall and "
746 << fred.getWeight() << " kgs in weight" << endl;
747
748 fred.setAll(34, 12, "Fred");
749
750 cout << fred.getName() << " is " << fred.getHeight() << " cms tall and "
751 << fred.getWeight() << " kgs in weight" << endl;
752
753 // Creating an object using the constructor
754 Animal tom(36, 15, "Tom");
755
756 cout << tom.getName() << " is " << tom.getHeight() << " cms tall and "
757 << tom.getWeight() << " kgs in weight" << endl;
758
759 // Demonstrate the inheriting class Dog
760 Dog spot(38, 16, "Spot", "Woof");
761
762 // static methods are called by using the class name and the scope operator
763 cout << "Number of Animals " << Animal::getNumOfAnimals() << endl;
764
765 spot.getSound();
766
767 // Test the toString method that will be overwritten
768 tom.toString();
769 spot.toString();
770
771 // We can call the superclass version of a method with the class name
772 // and the scope operator
773 spot.Animal::toString();
774
775 // When a function finishes it must return an integer value
776 // Zero means that the function ended with success
777 return 0;
778 }

You might also like