आप सही पढ़ते हैं।
using FuncType = int(*)(int,int); // pointer to a function
// taking 2 ints and returning one.
int add(int a, int b) { return a + b; }
int substract(int a, int b) { return a - b; }
स्टेटिक बाध्यकारी है जब बंधन संकलन समय पर जाना जाता है: बुनियादी उदाहरण के साथ दिया जा सकता है
int main() {
std::cout << add(4, 5) << "\n";
}
आपरेशन के एक गतिशील परिवर्तन के लिए कोई जगह छोड़ देता है, और इस तरह स्थिर बाध्य है।
int main() {
char op = 0;
std::cin >> op;
FuncType const function = op == '+' ? &add : &substract;
std::cout << function(4, 5) << "\n";
}
जबकि यहां इनपुट के आधार पर, 9 या -1 हो जाता है। यह गतिशील रूप से बाध्य है।
इसके अलावा, ऑब्जेक्ट उन्मुख भाषाओं में, virtual
कार्यों को गतिशील रूप से कुछ बांधने के लिए उपयोग किया जा सकता है। एक और अधिक वर्बोज़ उदाहरण इस प्रकार हो सकता है:
struct Function {
virtual ~Function() {}
virtual int doit(int, int) const = 0;
};
struct Add: Function {
virtual int doit(int a, int b) const override { return a + b; }
};
struct Substract: Function {
virtual int doit(int a, int b) const override { return a - b; }
};
int main() {
char op = 0;
std::cin >> op;
std::unique_ptr<Function> func =
op == '+' ? std::unique_ptr<Function>{new Add{}}
: std::unique_ptr<Function>{new Substract{}};
std::cout << func->doit(4, 5) << "\n";
}
जो शब्दार्थ पिछले उदाहरण के बराबर है ... लेकिन देर virtual
समारोह जो ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में आम है से बाध्यकारी परिचय देता है।
स्रोत
2013-08-03 17:17:09
* "[...] प्रारंभिक (या स्थिर) बाध्यकारी समय बाध्यकारी और देर से (या गतिशील) बाध्यकारी संकलन को संदर्भित करता है रनटाइम बाध्यकारी को संदर्भित करता है" * ..... हाँ, यह सब कुछ है। तुम और क्या जानना चाहते हो? आपका प्रश्न/भ्रम/संदेह क्या है? – Nawaz
विश्वास नहीं कर सकता कि इससे पहले नहीं पूछा गया था। – Shoe
के लिए ताजा उदाहरण लिखने के लिए बहुत पुराना विषय। इस [लिंक] पर एक नज़र डालें (http://www.learncpp.com/cpp-tutorial/124-early-binding-and-late-binding/) – loxxy