C++中的 using
2013-10-17 12:18
267 查看
using在c++中有两个用法:
一、使用名字空间。二、使用名字空间的名字。
一使用名字空间
大家都知道,一般常见的
完了。
二、使用名字空间的名字。
像
就是。
而我想写的是在继承里面using的用处。我知道的有两个,如下:
1)去除个别成员
如果进行private或者protected继承,则基类的访问级别在派生类中更加受限。我们可以使用using恢复继承成员的访问级别。
2)重载基类函数
如果派生类想重载基类的函数,要么重定义所有版本,要么一个也不定义。这个是因为派生类定义的函数会覆盖基类的名字。但是我们很多时候只是想重定义其中某些
函数,那么这个规则无疑令人厌烦。
使用 using 就可以解决这个问题。
这样就可以成功重载基类的函数。如果去掉using那一行,则程序将在编译时报错:找不到test(),test(int)的版本。
一、使用名字空间。二、使用名字空间的名字。
一使用名字空间
大家都知道,一般常见的
using namespace std;
完了。
二、使用名字空间的名字。
像
using std::cin; using std::vector;
就是。
而我想写的是在继承里面using的用处。我知道的有两个,如下:
1)去除个别成员
如果进行private或者protected继承,则基类的访问级别在派生类中更加受限。我们可以使用using恢复继承成员的访问级别。
class Base{ public: std::size_t get_size(){ return n;} protected: std::size_t n; }; class Derived:private Base{ public: using Base::get_size;//在Derived的public部分增加一个using声明,就可以使get_size本类的public成员。 protected: using Base::n;//此时n为protected成员。 };
2)重载基类函数
如果派生类想重载基类的函数,要么重定义所有版本,要么一个也不定义。这个是因为派生类定义的函数会覆盖基类的名字。但是我们很多时候只是想重定义其中某些
函数,那么这个规则无疑令人厌烦。
使用 using 就可以解决这个问题。
class Base{ public: void test(); void test(int ); void test(double); }; class Derived:public:Base{ public: using Base::test; void test(int ,double ); }; int main() { Derived d; d.test() d.test(1); d.test(1,1.2); return 0; }
这样就可以成功重载基类的函数。如果去掉using那一行,则程序将在编译时报错:找不到test(),test(int)的版本。
相关文章推荐
- ROS学习笔记四:Using C++ Classes in ROS
- 别再让C++头文件中出现“using namespace xxx;”
- Using GCC’s C++ Compiler
- C++之'using namespace std'
- 【LeetCode-225】 Implement Stack using Queues(C++)
- Using Visual C++ to Automate Office
- leetcode_c++:栈: Implement Stack using Queues(225)
- Using a MySQL Database with C++
- Using OpenAPI with C++[3] _VC调用WebService
- Using GDI+ with MFC or native C/C++
- Using Android Studio to build applications with NDK and Boost C++ libraries
- C++ using关键字作用 (重载父类函数)
- Using Lua with C++: A short tutorial
- C++当中,#include <string> 和 using std::string
- C++中using的作用
- Calling Lua functions : using C++ language
- C++ Using recursion to process linked list, 深入理解递归的过程(part1)
- C++引入名字空间(namespace)意义何在?为什么using namespace std会成为常用语句?
- C++ using 使用总结
- Error: Your project contains C++ files but it is not using a supported native build system