三种情况:
- 命名空间
- 在子类中引用基类成员
- 别名指定
命名空间:
using namesapce std;
#...
#...
在子类中引用基类成员
#include<string>
#include<iostream>
using namespace std;
class My{
public:
My() {};
void fun() { std::cout << "my::fun()" << std::endl; };
void fun(int n) { std::cout << "my::fun(int n)" << std::endl; };
void fun(string str) { std::cout << "my::fun(string str)" << std::endl; };
void fun(int n, string str) { std::cout << "my::fun(int n, string str)" << std::endl; };
virtual void fun02() { std::cout << "MY::fun02()" << std::endl; };
virtual void fun02(int n) { std::cout << "MY::fun02(int n)" << std::endl; };
virtual void fun02(string str) { std::cout << "MY::fun02(string str)" << std::endl; };
virtual void fun02(int n, string str) { std::cout << "MY::fun02(int n, string str)" << std::endl; };
};
class MySon : public My{
public:
MySon() {};
void fun(int n) { std::cout << "Myson::fun(int n)" << std::endl; };
virtual void fun02(int n) override { std::cout << "Myson::fun02(int n)" << std::endl; };;
using My::fun; //本篇所讲
using My::fun02; //本篇所讲
};
int main(int argc, char* argv[]){
MySon mySon;
mySon.fun(1);
mySon.fun02(4);
//后面三个都是得益于 using My::fun; 而可以使用
mySon.fun();
mySon.fun("str");
mySon.fun(2, "ac");
//后面三个都是得益于 using My::fun02; 而可以使用
mySon.fun02();
mySon.fun02("ab");
mySon.fun02(3, "test");
}
输出
Myson::fun(int n)
Myson::fun02(int n)
my::fun()
my::fun(string str)
my::fun(int n, string str)
MY::fun02()
MY::fun02(string str)
MY::fun02(int n, string str)
别名指定
# 使用 a 代表 int
using a = int;
a name = 12;
std::cout << name << std::endl;
参考
参考1