अंतिम अद्यतन:2026-10-12
C++ using declaration और alias¶
लेखक के बारे में:¶
व्यक्तिगत WeChat सार्वजनिक अकाउंट:

बुनियादी उपयोग¶
local और global using,विस्तृत operations और उपयोग नीचे दिए उदाहरण में देखें:
#include <iostream>
#define isNs1 1
//#define isGlobal 2
using namespace std;
void func()
{
cout<<"::func"<<endl;
}
namespace ns1 {
void func()
{
cout<<"ns1::func"<<endl;
}
}
namespace ns2 {
#ifdef isNs1
using ns1::func; /// ns1中的函数
#elif isGlobal
using ::func; /// 全局中的函数
#else
void func()
{
cout<<"other::func"<<endl;
}
#endif
}
int main()
{
/**
* 这就是为什么在c++中使用了cmath而不是math.h头文件
*/
ns2::func(); // 会根据当前环境定义宏的不同来调用不同命名空间下的func()函数
return 0;
}
accessibility बदलना¶
class Base{
public:
std::size_t size() const { return n; }
protected:
std::size_t n;
};
class Derived : private Base {
public:
using Base::size;
protected:
using Base::n;
};
Derived क्लास ने Base को privately inherit किया है, इसके लिए मेंबर वेरिएबल n और मेंबर फ़ंक्शन size private हैं, अगर using statement का उपयोग करें, तो इनकी accessibility बदली जा सकती है, जैसे उपरोक्त उदाहरण में size को public permission से एक्सेस किया जा सकता है, और n को protected permission से। पूरा कोड देखें: derived_base.cpp
फ़ंक्शन overloading¶
inheritance के दौरान derived क्लास overloaded फ़ंक्शन के 0 या अधिक इंस्टेंस को override कर सकती है, एक बार कोई overload वर्ज़न परिभाषित करते ही बाकी overload वर्ज़न invisible हो जाते हैं।
अगर बेस क्लास के overloaded फ़ंक्शन में से हमें derived क्लास में एक को बदलना हो और बाकी को visible रखना हो, तो सभी वर्ज़न overload करने पड़ेंगे, जो बहुत कष्टप्रद है।
#include <iostream>
using namespace std;
class Base{
public:
void f(){ cout<<"f()"<<endl;
}
void f(int n){
cout<<"Base::f(int)"<<endl;
}
};
class Derived : private Base {
public:
using Base::f;
void f(int n){
cout<<"Derived::f(int)"<<endl;
}
};
int main()
{
Base b;
Derived d;
d.f();
d.f(1);
return 0;
}
पूरा कोड देखें: using_derived.cpp
typedef की जगह¶
C में अक्सर typedef A B जैसा syntax उपयोग होता है, जिससे B को A टाइप परिभाषित किया जाता है, यानी A टाइप को alias B देना।
typedef A B के संगत, using B=A का उपयोग करके वही काम किया जा सकता है।
पूरा कोड देखें: using_typedef.cppसंबंधित विषय¶
- C++ प्योर वर्चुअल फ़ंक्शन और एब्स्ट्रैक्ट क्लास | C++那些事
- C++ assert | C++那些事
- C++ bit-field | C++那些事
- C भाषा से C++ पॉलीमॉर्फ़िज़्म | C++那些事
- C++ const constant और qualifier | C++那些事
- C++ const परिवार | C++那些事
- C++ dereference ऑपरेटर * | C++那些事
- C++ इनिशियलाइज़ेशन और असाइनमेंट | C++那些事
- C++ multiple return values लिखने के तरीके | C++那些事
- C++ mutable कीवर्ड | C++那些事