using用法是:1、命名空间【using namespace 命名空间】;2、类型别名【using aa=double】;3、改变从基类继承来的成员的访问级别;4、让派生类对基类中所有的重载函数都可见;5、让派生类继承所有构造函数。

【相关学习推荐:C语言教程视频

using用法是:

1、命名空间

using namespace 命名空间;//这样每次使用命名空间中的变量时就不用指定命名空间了

注意:头文件中不应有using命名空间的声明

2、类型别名(C++11)

using aa = double;//等价于typedef double aatypedef double db, *p;//db是double的同义词,p是double*的同义词(注意)

3、改变从基类继承来的成员的访问级别

class base {public:    int fun(int x);    int b;};class son : private base {public:    using base::fun;    //fun(int x)由private变成public(注意:using不指定参数列表)protected:    using base::b;    //b由public变成protected};

4、让派生类对基类中所有的重载函数都可见,而不是隐藏

class base {public:    void func()    {        cout << "func1()" << endl;    }    void func(int x)    {        cout << "func2()" << endl;    }};class son : public base {public:    using base::func;    //若没有此句,func()和func(int x)将会被隐藏    void func(int x, int y)    {        cout << "func()3" << endl;    }};

5、第4点的升级,using可让派生类继承直接基类所有的构造函数

1)派生类并非以常规方式继承基类的构造函数,而是要使用using声明让派生类继承基类的所有的(有两个例外)构造函数

2)例外一:派生类自己的构造函数与基类的某个构造函数有相同的形参,则该构造函数不会被继承

例外二:默认、拷贝和移动构造函数不会被继承

3)与第3点不同,using声明不会改变继承的构造函数的访问级别:不管using声明出现在哪,基类的共有/受保护/私有构造函数在派生类中还是一个共有/受保护/私有构造函数,

4)using声明不能指定explicit和constexpr:如果基类的构造函数是explicit或constexpr,则继承的构造函数也拥有相同的属性

5)继承的构造函数不算自定义的构造函数,所以仍然可以满足合成构造函数的生成规则

6)如果基类的构造函数有默认实参,则实默认参不会被继承

7)如果基类的构造函数有两个形参,一个形参没有默认实参,另一个形参有默认实参,则通过继承会获得两个构造函数:一个构造函数有两个形参,另一个只有一个形参(对应没有默认实参的那个),总之,默认实参都不会被继承

class base {public:    base() {}    base(string s, int a) {}};class son : public base {public:    using base::base;//继承直接基类所有的构造函数,对于基类的每个构造函数,编译器都在派生类中生成一个形参完全相同的构造函数  //using不能指定explicit和constexprprivate:    //使用继承来的构造函数时,如果派生类有自己的数据成员,则这些成员将被默认初始化    string str;    int num;};//等价于:class son : public base {public:    son():base() {}    son(string s, int a): base(s, a) {}};

更多相关文章

  1. 虚函数和纯虚函数的区别是什么?
  2. windows.h有哪些函数
  3. strcat函数的作用是什么
  4. strcpy函数的作用是什么
  5. c源程序中main函数的位置是什么?
  6. c++清屏函数是什么
  7. C语言字符串输出函数puts()的作用是什么
  8. go defer(go延迟函数)介绍
  9. go语言的init函数详解

随机推荐

  1. 小心XmlPullParser.netText()方法
  2. xpath技术解析xml以及案例模拟用户登录效
  3. android dom方式创建xml
  4. android pull 创建xml文件
  5. xml解析之sax解析原理图和技术介绍
  6. android dom 解析xml方式
  7. XML解析之SAX解析过程代码详解
  8. XML引入以及与html的区别
  9. XML解析之sax解析案例(一)读取contact.xml
  10. xml作用以及语法