Última actualización:2026-10-12
Declaraciones using y alias en C++¶
Sobre el autor:¶
Cuenta pública personal:

Uso básico¶
using local y global; las operaciones y usos concretos se muestran en los siguientes ejemplos:
#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;
}
Cambiar la accesibilidad¶
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;
};
La clase Derived hereda de Base de forma privada, de modo que para ella la variable miembro n y la función miembro size son privadas; si se usa una sentencia using, se puede cambiar su accesibilidad: como en el ejemplo anterior, a size se puede acceder con permisos public, y a n con permisos protected. El código completo puede verse en: derived_base.cpp
Sobrecarga de funciones¶
Durante la herencia, la clase derivada puede cubrir cero o más instancias de las funciones sobrecargadas; en cuanto se define una versión sobrecargada, las demás versiones sobrecargadas se vuelven invisibles.
Si, de las funciones sobrecargadas de la clase base, necesitamos modificar una en la clase derivada y mantener visibles las demás, hay que sobrecargar todas las versiones, lo cual resulta muy tedioso.
#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;
}
El código completo puede verse en: using_derived.cpp
Sustituir a typedef¶
En C es habitual la sintaxis typedef A B, que define B como el tipo A, es decir, le da al tipo A el alias B
Correspondiendo a typedef A B, se puede usar using B=A para realizar la misma operación.
El código completo puede verse en: using_typedef.cppTemas relacionados¶
- Funciones virtuales puras y clases abstractas en C++ | C++那些事
- Aserciones assert en C++ | C++那些事
- Campos de bits en C++ | C++那些事
- Implementar el polimorfismo de C++ en lenguaje C | C++那些事
- const en C++: constantes y modificación | C++那些事
- La familia completa de const en C++ | C++那些事
- El operador de desreferencia * en C++ | C++那些事
- Inicialización y asignación en C++ | C++那些事
- Formas de devolver varios valores en C++ | C++那些事
- La palabra clave mutable en C++ | C++那些事