Friend Function - Part 1
Duration: 37 min
This video lesson is available to enrolled students.
Inside: a video lesson and guided study material.
Module outline
- About Course: UPPSC Course Overview
- Interview Preparation & Guidance: Interview Preparation
- Paper 1 | General Hindi: भाषा, लिपि, ध्वनि, वर्ण, अक्षर, स्वर, व्यंजन, मात्रा और संयुक्ताक्षर, वर्तनी, वर्ण-विन्यास, अनुस्वार, अनुनासिक, चंद्रबिंदु और ‘र’ के रूप, शब्द, पद और शब्द-भेद, संज्ञा और सर्वनाम, विशेषण और क्रिया, लिंग, वचन, पुरुष और कारक, काल, वाच्य, वाक्य और वाक्य-भेद, वर्णमाला, समास, संधि, विलोम शब्द, पर्यायवाची शब्द, सामान्य अशुद्धियाँ, अनेक शब्दों के लिए एक शब्द, मुहावरे और लोकोक्तियाँ, अपठित गद्यांश और अपठित पद्यांश, Multi-Topic Content (Cross-Concept Material)
- Paper 2 | General Studies: State Wise GK, Polity, Geography, History, GK- Current Affairs
- Paper 1 | Programming Language: Language Design, C Fundamentals, Control Flow, Functions, Arrays & Pointers, Storage Classes, Structures & Enums, DMA, Macros, Scoping & File Handling, OOPS with C++
- Paper 1 | Database Management Systems: Basics of DBMS, ER Diagram, Relational Model & Functional Dependencies, Keys & Integrity Constraints, Normalization (1NF - BCNF), Decomposition Properties & 4NF, File Organization & Indexing, Relational Algebra, SQL, Relational Calculus, Transaction Management, Concurrency Control, ORDBMS, NoSQL
- Paper 1 | Cyber Security: Society, Law & Ethics, Cyber Threats and Malware Attacks, Role of Internet and Web Services, Security in Mobile and Wireless Computing, Electronic Data Interchange and E-Commerce, Physical Security and Cryptography Basics, Intrusion Detection Systems (IDS), Cyber Safety and Security, Ethical Hacking
- Paper 1 | Computer Organization and Architecture: Basics of COA, Programming the Basic Computer, Cache Memory Organization, Input Output Organisation, Instr Formats & Modes, Register Transfer and Microoperations, Control Unit Design
- Paper 1 | Computer Networks: Introduction to CN, Data Communication, DLL: Access Control, DLL: Flow Control, DLL: Error Control, DLL: Framing, Data Link Layer - Ethernet, Net Layer: IPv4 & Proto, Net Layer: IP Addressing, Net Layer:Routing Protocol, Transport Layer Services, TL: Congestion & UDP, Application Layer, Hardware basics, Network Security
- Paper 1 | Design and Analysis of Algorithms: Algorithm Analysis, Time Complexity Analysis, Sorting Algorithms, Greedy Algorithms, Dynamic Programming, Minimum Spanning Trees, Shortest Path Algos, Advanced Algorithms
- Paper 1 | Data Structures: Introduction to DS, Array, Linked List, Stack, Queue, Tree, Graphs, Hashing
- Paper 1 | Discrete Structures and Theory of Logic: Permutation and Combination, Set Theory, Relations, Functions, Propositional and Predicate Logic, Graph Theory, Group Theory
- Paper 1 | Software Project Management: Software Project Management
- Paper 2 | Operating Systems: Introduction to OS, Process Management, CPU Scheduling, Process Synchronization, Threads & Process Creation, Deadlock, Memory Management, Virtual Memory, Disc Scheduling, File Management, Unix OS, Linux OS, Security
- Paper 2 | Compiler Design: Intro to Compilers, Lexical Analysis, Grammar & CFG, Syntax Analysis: Top-Down, Syntax Analysis: Bottom-Up, Semantic Analysis & SDT, Intermediate Code Gen, Code Optimization, Run Time Environment, Introduction to TOC, Deterministic FA (DFA), Non-Deterministic FA, Regular Expressions, Pushdown Automata & CFG, Complexity Theory
- Paper 2 | Artificial Intelligence & High Performance Computing: Approaches to AI, Search Algorithms, Game Playing, Knowledge Representation, Planning, Multi Agent Systems, Natural Language Processing, Emerging Tech Trends
- Paper 2 | Image Processing: Digital Image Fundamentals, Image Enhancement, Image Restoration, Color Image Processing, Image Compression
- Paper 2 | Software Engineering: Fundamentals of Software Engineering, Software Requirements and Quality Assurance, Software Design, Estimation and Metrics, Software Testing, Software Maintenance and Configuration Management
- Paper 2 | Computer Graphics: Basics of Computer Graphics, 2-D Geometrical Transforms and Viewing, 3-D Object Representation, Geometric Transformations and Viewing
- Paper 2 | Web Technologies: Website, Browser & Services, Internet Fundamentals, Web Design & Development, Protocols & Services, Web Publishing & Hosting, Server Side & Security, Emerging Technologies, HTML Basics, JavaScript-Basics, Java
- Paper 2 | Soft Computing: Fuzzy Sets, Artificial Neural Networks, Genetic Algorithms
- Paper 2 | Distributed System: Distributed Systems
- UPPSC Live Class Recordings: UPPSC Polytechnic Lecturer 2025 (CS)
- Previous Year Papers:
- Mock Test:
AI summary & chapters
AI Summary
An AI-generated summary of this video lecture.
This lecture introduces the concept of Friend Functions in C++ Object-Oriented Programming, defining them as non-member functions granted access to private and protected members of a class. The instructor explains that while encapsulation restricts direct access, friend functions provide an exception to data hiding rules. The session covers the syntax for declaring a friend function using the keyword 'friend' inside a class definition and lists four categories: simple friend functions, bridge functions between classes, friend classes, and member functions of one class acting as friends to another. The lecture progresses from theoretical definitions to practical code examples, starting with a simple friend function calculating the area of a circle by accessing its private radius member. It then advances to a more complex scenario involving two classes, Circle and Rectangle, where a shared friend function calculates the difference in their areas. The instructor emphasizes the necessity of forward declarations when one class references another within a friend function declaration, demonstrating how to pass objects as arguments to access private data across class boundaries.
Chapters
0:00 – 2:00 00:00-02:00
The video begins with an introduction to the topic of Friend Functions within Object-Oriented Programming (OOPS) using C++. The instructor presents a title slide displaying 'OOPS with C++' and 'Friend Function'. He begins writing notes on the slide, specifically focusing on access specifiers like 'Private' and 'Public' associated with a class. The visual progression shows the instructor annotating the slide to explain how friend functions interact with class members, underlining key terms and listing access modifiers such as 'LDM (Private)' and 'LMF (Public)'. The instructor gestures with his hands to emphasize points while maintaining a thinking pose.
2:00 – 5:00 02:00-05:00
The instructor introduces the concept of a Friend Function within Object-Oriented Programming in C++. He begins by writing class inheritance notation (Class B inheriting from Class A) to set up a context for accessing private members. The visual focus shifts between the inheritance diagram and the main topic 'Friend Function' to illustrate how access control works. He writes 'Inherit' below the diagram and then crosses it out, suggesting a distinction between inheritance and friend functions. The slide outlines that this mechanism is used when accessing private data from outside the class, bypassing standard encapsulation rules.
5:00 – 10:00 05:00-10:00
The video introduces the concept of a 'Friend Function' in C++ Object-Oriented Programming. The instructor explains that a friend function is a non-member function granted access to the private and protected members of a class. The slide outlines that this mechanism is used when accessing private data from outside the class, bypassing standard encapsulation rules. The instructor underlines key phrases like 'non-member function', 'private and protected members', and the syntax for declaration. The slide highlights that the friend keyword is used inside the class to declare this function, which allows access from outside without violating data hiding principles.
10:00 – 15:00 10:00-15:00
The instructor explains the syntax and categories of friend functions in C++, emphasizing that they are non-member functions granted access to private data. He illustrates how a friend function is declared and discusses the logical requirement for it to take an object as an argument. The lesson progresses through different categories of friend functions, including simple friend functions and bridges between classes. He uses checkmarks to validate correct syntax and crosses out incorrect usage examples, marking the distinction between valid and invalid implementations of friend functions.
15:00 – 20:00 15:00-20:00
The video lecture introduces the concept of Friend Functions in C++, explaining them as non-member functions that access private and protected class members. The instructor details the syntax, categories of friend functions (simple, bridge, etc.), and logical requirements like passing objects as arguments. The session transitions to a practical code example demonstrating a 'Simple Friend Function' that calculates the area of a circle by accessing its private radius member. The code snippet includes '#include <iostream>' and 'class Circle { float r; ... friend float cal_area(Circle c); }'.
20:00 – 25:00 20:00-25:00
The instructor explains the concept of a simple friend function in C++ using a `Circle` class example. He demonstrates how the friend function `cal_area` is declared inside the class and defined outside, allowing it to access private members like `r`. The instructor draws diagrams to illustrate the relationship between the class object and the friend function, showing how the private data is accessed during execution. The output shows 'Input radius: 5' resulting in '78.5', confirming the calculation `return 3.14 * c.r * c.r;`.
25:00 – 30:00 25:00-30:00
The instructor explains a C++ friend function example where two classes, Circle and Rectangle, share a common friend function to calculate the combined area. He demonstrates how the friend function accesses private members of both classes by passing objects as arguments. The instructor manually traces the execution flow, calculating values for radius and dimensions to verify the output. He circles 'friend float res_area' declarations in both classes, drawing diagrams to represent object memory layout (Circle 'c' and Rectangle 's') and verifying the final output 28.5 in the console window.
30:00 – 35:00 30:00-35:00
The instructor is explaining the concept of a friend function that acts as a bridge between two classes, specifically `Circle` and `Rectangle`. He highlights the forward declaration of `class Rectangle` at line 5, which is necessary because the friend function inside `Circle` references `Rectangle` before it is fully defined. The code demonstrates a global friend function `res_area` that takes objects of both classes as parameters to calculate an area involving private members from each. The instructor emphasizes the forward declaration necessity and bridge concept between classes.
35:00 – 37:23 35:00-37:23
The instructor concludes the segment by reinforcing the syntax for declaring friend functions inside class definitions and defining them outside. He shows the definition of `res_area` function outside classes, demonstrating usage in the main function. The code snippet includes 'friend float res_area(Rectangle s, Circle c);' and 'return s.ar - c.ar;'. The instructor highlights the forward declaration necessity, bridge concept between classes, and accessing private members via friend function parameters to ensure students understand the complete flow of data access across class boundaries.
The lecture systematically builds understanding of Friend Functions in C++ by first defining them as non-member functions that bypass encapsulation to access private and protected members. The instructor uses visual aids, including class diagrams and code snippets, to illustrate the syntax 'friend void functionName(ClassName);' and lists four categories of friend functions. The progression moves from theoretical definitions to practical implementation, starting with a simple example calculating the area of a circle. The complexity increases as the instructor introduces a bridge function between two classes, Circle and Rectangle, requiring forward declarations. Key evidence includes the code 'class Circle { float r; ... friend float cal_area(Circle c); }' and the output '78.5'. The instructor emphasizes that while friend functions violate strict data hiding, they are essential for operations like operator overloading and cross-class calculations. The final examples demonstrate how to pass objects as arguments to access private data, with the instructor manually tracing execution to verify outputs like '28.5'.