If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
Class में बिना static keyword के define किये गए सभी Properties / Methods Non Static members होते हैं , By default ये Properties / Methods Non Static ही होते हैं, और इन्हे class object के साथ ही access किया जा सकता है।
Static और Non Static में सबसे बड़ा difference यही होता है कि , Static Members (Property / Methods) Access करने के लिए हमें उस class का Object नहीं बनाना पड़ता है , simply ClassName और Double Colon (::) का use करके हम directly Class की Static Property / Methods Access कर सकते हैं।
जबकि Non Static Members को access करने के लिए Class का Object बनाना ही पड़ेगा , बिना Object बनाये Non Static Members (Property / Methods) को access नहीं कर पाएंगे।
#include <iostream>
using namespace std;
// define class.
class MyCalss{
// define variables.
string fname = "Rahul";
string lname = "Verma";
// define public method so that we can access it inside main() function.
public :
string get_name(){
return fname +" "+ lname;
}
};
int main() {
// here create class Object to access class members.
MyCalss myobj;
cout << myobj.get_name();
return 0;
}
Rahul Verma
हालाँकि Object initialization के बाद आप Class property को modify / update भी कर सकते हो। लेकिन उससे पहले उन properties को आपको as a public property define करना पड़ेगा ,नहीं तो आप class के बाहर directly access नहीं कर पाएंगे।
#include <iostream>
using namespace std;
class MyCalss{
// define , properties and method public.
public :
string get_name(){
return fname +" "+ lname;
}
string fname = "Rahul";
string lname = "Verma";
};
int main() {
cout << "Before update : ";
MyCalss myobj;
cout << myobj.get_name();
cout << endl << "After update : ";
myobj.fname = "Ramesh";
myobj.lname = "Yadav";
cout << myobj.get_name();
// update
return 0;
}
Before update : Rahul Verma After update : Ramesh Yadav
Non Static method में आप Static Properties / Methods को access कर सकते हैं , लेकिन Static Methods में Non Static Properties / Methods को access नहीं कर सकते हैं। क्योंकि Non Static Properties / Methods को access करने के लिए , Object का initialization जरूरी होता है जबकि Static Properties / Methods को बिना Object initialization के भी access कर सकते हैं।
For Example :
#include <iostream>
using namespace std;
class MyCalss{
// define , properties and method public.
public :
string get_name(){
// access static properties.
return fname +" "+ lname;
}
static string fname;
static string lname;
};
// now initialize static values.
string MyCalss::fname = "Rahul";
string MyCalss::lname = "Verma";
int main() {
MyCalss myobj;
cout << myobj.get_name();
return 0;
}
Rahul Verma
अगर आप static method में non static property या non static method access करने की कोशिश करते हैं , तो कुछ इस तरह से एरर आती है।
class MyCalss{
// access non-static properties in static method.
public :
static string get_name(){
// access non static properties in static method.
return fname +" "+ lname;
}
string fname = "First Name";
string lname = "Last Name";
};
Error :
In static member function 'static std::string MyCalss::get_name()':
error: invalid use of member 'MyCalss::fname' in static member function
8 | return fname +" "+ lname;
| ^~~~~ ^~~~~