लोड हो रहा है...

Operators reference

C++ में ऑपरेटर्स प्रोग्रामिंग के मूलभूत तत्व हैं जो डेटा, ऑब्जेक्ट और एल्गोरिदम के प्रबंधन और संशोधन की क्षमता प्रदान करते हैं। ऑपरेटर्स का सही उपयोग दक्ष, सुरक्षित और पठनीय कोड लिखने के लिए अनिवार्य है। यह संदर्भ C++ में सभी प्रमुख ऑपरेटर्स—जैसे गणितीय, तार्किक, रिलेशनल और बिटवाइज—की संरचना, उपयोग और व्यावहारिक अनुप्रयोगों पर केंद्रित है।
ऑपरेटर्स का उपयोग विभिन्न संदर्भों में किया जाता है, जैसे मानों की गणना, तुलना करना, बूलियन लॉजिक और कस्टम क्लास के लिए ओवरलोडिंग। विशेष रूप से OOP में ऑपरेटर ओवरलोडिंग क्लास के ऑब्जेक्ट्स को सहज और संरचित ढंग से उपयोग करने की सुविधा देती है। इस संदर्भ के माध्यम से पाठक सीखेंगे कि ऑपरेटर्स का उपयोग कैसे कुशल डेटा संरचनाओं, एल्गोरिदम और साफ़-सुथरे इंटरफेस के निर्माण में किया जा सकता है।
इस संदर्भ में आपको ऑपरेटर्स की सटीक सिंटैक्स, ऑपरेटर प्रायरिटी, ओवरलोडिंग के नियम और सामान्य गलतियों—जैसे मेमोरी लीक, गलत शर्तें या अनावश्यक कॉपीज—से बचने की तकनीकें भी सिखाई जाएंगी। यह गाइड वास्तविक C++ परियोजनाओं में तुरंत लागू होने योग्य उदाहरणों के साथ डिज़ाइन की गई है।

मूल उदाहरण

text
TEXT Code
\#include <iostream>
using namespace std;

int main() {
int a = 10;
int b = 5;

int sum = a + b; // गणितीय ऑपरेटर
bool equal = (a == b); // रिलेशनल ऑपरेटर
bool logic = (a > b) && (b > 0); // तार्किक ऑपरेटर

cout << "Sum: " << sum << endl;
cout << "A equal B? " << (equal ? "Yes" : "No") << endl;
cout << "Logical condition: " << (logic ? "True" : "False") << endl;

return 0;

}

यह उदाहरण C++ में बुनियादी ऑपरेटर्स को दर्शाता है। "+" ऑपरेटर दो integer मानों का योग करता है। "==" ऑपरेटर तुलना करता है और Boolean मान लौटाता है। "&&" ऑपरेटर दो शर्तों को संयोजित करता है और केवल तभी true लौटाता है जब दोनों शर्तें सत्य हों। तर्नरी ऑपरेटर "?" boolean परिणाम को पढ़ने योग्य रूप में प्रदर्शित करता है।
इस उदाहरण में ऑपरेटर प्रायरिटी, सिंटैक्स और मूल डेटा प्रकारों पर ध्यान दिया गया है। सही संरचना और स्पष्ट शर्तें कोड की पठनीयता और रखरखाव क्षमता बढ़ाती हैं। वास्तविक परियोजनाओं में, यह ज्ञान जटिल लॉजिक और एल्गोरिदम को सुरक्षित और प्रभावी ढंग से लागू करने के लिए आवश्यक है।

व्यावहारिक उदाहरण

text
TEXT Code
\#include <iostream>
using namespace std;

class Point {
public:
int x, y;

Point(int px, int py) : x(px), y(py) {}

// + ऑपरेटर ओवरलोडिंग
Point operator+(const Point& p) {
return Point(x + p.x, y + p.y);
}

// == ऑपरेटर ओवरलोडिंग
bool operator==(const Point& p) {
return (x == p.x) && (y == p.y);
}

void display() {
cout << "(" << x << ", " << y << ")" << endl;
}

};

int main() {
Point p1(2, 3);
Point p2(4, 5);

Point p3 = p1 + p2; // ओवरलोडेड ऑपरेटर का उपयोग
p3.display();

cout << "P1 equal P2? " << (p1 == p2 ? "Yes" : "No") << endl;

return 0;

}

Advanced C++ Implementation

text
TEXT Code
\#include <iostream>
\#include <vector>
\#include <stdexcept>
using namespace std;

class Matrix {
private:
vector\<vector<int>> data;
public:
Matrix(int rows, int cols) : data(rows, vector<int>(cols, 0)) {}

// () ऑपरेटर ओवरलोडिंग
int& operator()(int i, int j) {
if(i < 0 || i >= data.size() || j < 0 || j >= data[0].size())
throw out_of_range("Index out of range");
return data[i][j];
}

// + ऑपरेटर ओवरलोडिंग
Matrix operator+(const Matrix& m) {
if(data.size() != m.data.size() || data[0].size() != m.data[0].size())
throw invalid_argument("Incompatible dimensions");
Matrix result(data.size(), data[0].size());
for(size_t i = 0; i < data.size(); i++)
for(size_t j = 0; j < data[0].size(); j++)
result(i,j) = data[i][j] + m.data[i][j];
return result;
}

void display() {
for(auto &row : data) {
for(auto &val : row)
cout << val << " ";
cout << endl;
}
}

};

int main() {
Matrix m1(2,2);
Matrix m2(2,2);
m1(0,0)=1; m1(0,1)=2; m1(1,0)=3; m1(1,1)=4;
m2(0,0)=5; m2(0,1)=6; m2(1,0)=7; m2(1,1)=8;

Matrix m3 = m1 + m2;
m3.display();

return 0;

}

C++ में ऑपरेटर्स के लिए Best Practices में ऑपरेटर प्रायरिटी और स्पष्ट शर्तों का ध्यान रखना शामिल है। ओवरलोडेड ऑपरेटर्स का उपयोग तब किया जाना चाहिए जब व्यवहार सहज और अनुमान योग्य हो। आम गलतियों में ऑब्जेक्ट्स का अनजाना बदलाव, डायनामिक ऑब्जेक्ट्स में मेमोरी लीक, और अपर्याप्त exception handling शामिल हैं।
Debugging tools जैसे gdb या Visual Studio Debugger का उपयोग करके ऑपरेटर के step-by-step मूल्यांकन की जाँच करना फायदेमंद होता है। Performance में सुधार references और rvalue references के माध्यम से किया जा सकता है। सुरक्षा के लिए रिलेशनल और लॉजिकल ऑपरेटर्स का सावधानीपूर्वक उपयोग आवश्यक है, विशेषकर critical conditions में।

📊 संपूर्ण संदर्भ

C++ Element/Method Description Syntax Example Notes
Operator + Addition a + b int c = a + b; Int, float, double
Operator - Subtraction a - b int c = a - b; Int, float, double
Operator * Multiplication a * b int c = a * b; Int, float, double
Operator / Division a / b int c = a / b; Watch division by 0
Operator % Modulo a % b int c = a % b; Integers only
Operator == Equality a == b bool e = (a == b); true/false
Operator != Inequality a != b bool e = (a != b); true/false
Operator > Greater than a > b bool e = (a > b); true/false
Operator < Less than a < b bool e = (a < b); true/false
Operator >= Greater or equal a >= b bool e = (a >= b); true/false
Operator <= Less or equal a <= b bool e = (a <= b); true/false
Operator && Logical AND a && b bool e = (a && b); Short-circuit
Operator ! Logical NOT !a bool e = !a; Invert boolean
Operator ++ Increment ++a / a++ int b = ++a; Pre/Post increment
Operator -- Decrement --a / a-- int b = --a; Pre/Post decrement
Operator = Assignment a = b a = 5; Overloadable
Operator += Add & assign a += b a += 3; Avoid extra copies
Operator -= Subtract & assign a -= b a -= 2; Avoid extra copies
Operator *= Multiply & assign a *= b a *= 4; Avoid extra copies
Operator /= Divide & assign a /= b a /= 2; Avoid extra copies
Operator %= Modulo & assign a %= b a %= 2; Integers only
Operator \[] Array access arr\[i] int v = arr\[0]; Overloadable
Operator () Function call / access obj(i) val = obj(1); Overloadable
Operator -> Access member via pointer ptr->member ptr->x; Pointer required
Operator , Comma operator a, b int c = (a, b); Evaluates b
Operator ?: Ternary operator cond ? a : b int c = (x>0?1:0); Conditional
Operator type_cast Type cast (type) a (float)a; C-style cast
Operator static_cast Static cast static_cast<int>(a) int b = static_cast<int>(f); Recommended
Operator const_cast Remove const const_cast\<int&>(a) int \&b = const_cast\<int&>(a); Caution
Operator reinterpret_cast Low-level cast reinterpret_cast\<int*>(ptr) int *p = reinterpret_cast\<int*>(ptr); Risky

📊 Complete C++ Properties Reference

Property Values Default Description C++ Support
Operator priority High to Low Depends Determines evaluation order C++98+
Associativity Left/Right Depends Evaluation direction C++98+
Operator overloading Yes/No No Define custom behavior for classes C++98+
Pre/Post increment Pre/Post Pre Determines return value C++98+
Operand types int, float, double, objects Depends Allowed types per operator C++98+
Implicit conversion Yes/No Yes Automatic type casting C++98+
Explicit conversion Yes/No No Use static_cast or cast C++98+
Short-circuit evaluation Yes/No Yes For && and C++98+
Bit operators &, , ^, \~, <<, >> Depends Bit manipulation
Const-correctness Yes/No No Prevents unwanted modification C++98+
Ternary operator ?: No Conditional evaluation C++98+

Operators reference में विशेषज्ञता प्राप्त करना C++ विकास में महत्वपूर्ण है। गणितीय, तार्किक और रिलेशनल ऑपरेटर्स का ज्ञान आपको कस्टम टाइप्स पर सहज नियंत्रण और जटिल एल्गोरिदम के कुशल निष्पादन की सुविधा देता है। अगले चरणों में ऑपरेटर ओवरलोडिंग, स्ट्रीम ऑपरेटर्स और STL ऑपरेटर्स का गहन अध्ययन शामिल होना चाहिए। व्यावहारिक परियोजनाओं में इनका उपयोग, Debugging tools और Best Practices के साथ मिलाकर, स्थायी कौशल विकास को बढ़ावा देता है।

🧠 अपने ज्ञान की परीक्षा करें

शुरू करने के लिए तैयार

अपने ज्ञान की परीक्षा करें

इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं

3
प्रश्न
🎯
70%
पास करने के लिए
♾️
समय
🔄
प्रयास

📝 निर्देश

  • हर प्रश्न को ध्यान से पढ़ें
  • हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
  • आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
  • आपकी प्रगति शीर्ष पर दिखाई जाएगी