精华内容
下载资源
问答
  • 待写
    待写
    
    展开全文
  • 学校人事部门保存了有关学生部分数据(学号、姓名、年龄、住址),教务部门也保存了学生另外一些...要求用c++编程,使用命名空间。解:命名空间是用户命名作用域,用来处理程序中常见同名冲突。命名空间::

    学校的人事部门保存了有关学生的部分数据(学号、姓名、年龄、住址),教务部门也保存了学生的另外一些数据(学号、姓名、性别、成绩),两个部门分别编写了本部门的学生数据管理程序,其中都用了Student作为类名。现在要求在全校的学生数据管理程序中调用这两个部门的学生数据,分别输出两种内容的学生数据。要求用c++编程,使用命名空间。

    解:命名空间是用户命名的作用域,用来处理程序中常见的同名冲突。

    命名空间::命名空间成员名

    程序:

     //header1.h

    #pragma once

    #include <string>

    namespace student1

    {

    class Student

    {

    public:

    Student(int n, string nam, int a,string addr)

    {

    num = n;

    name = nam;

    age = a;

    address = addr;

    }

    void show_data();

    private:

    int num;

    string name;

    int age;

    string address;

    };

    void Student::show_data()

    {

    cout << "num:" << num << " name:" << name << " age:" << age << " address:" << address << endl;

    }

    }

    //header2.h

    #pragma once

    #include <string>

    namespace student2

    {

    class Student

    {

    public:

    Student(int n, string nam, char s, float sco)

    {

    num = n;

    name = nam;

    sex = s;

    score = sco;

    }

    void show_data();

    private:

    int num;

    string name;

    char sex;

    float score;

    };

    void Student::show_data()

    {

    cout << "num:" << num << " name:" << name << " sex:" << sex << " score:" << score << endl;

    }

    }

    //main file(主文件)

    #include<iostream>

    using namespace std;

    #include"header1.h"

    #include"header2.h"

    using namespace student1;

    int main()

    {

    Student stud1(1001, "wang", 18, "123 Beijing Road,Shanghai");

    stud1.show_data();

    student2::Student stud2(1102, "Li", 'f', 89.5);

    stud2.show_data();

    system("pause");

    return 0;

    }

    运行结果:

    num:1001 name:wang age:18 address:123 Beijing Road,Shanghai

    num:1102 name:Li sex:f score:89.5

    请按任意键继续. . .


    本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1753964

    展开全文
  • Android命名空间的使用总结

    千次阅读 2017-02-03 22:04:05
    Android的命名空间在开发中使用的频率其实是比较少,但是对于开发者来说还是要学会简单使用的,它作用场合一般是用户自定义View组件中!  简单应用举例,比如:一个自定义进度条组件,在布局文件中设置...

           Android的命名空间在开发中使用的频率其实是比较少的,但是对于开发者来说还是要学会简单使用的,它的作用场合一般是用户自定义View的组件中!
           简单的应用举例,比如:一个自定义的进度条组件,在布局文件中设置好最大值,然后用自定义组件的代码来获取布局文件中设置的数字。
           Android命名空间实际考查的是资源文件Attribute的获取使用!

    一.Android命名空间的基础知识要点

    Android命名空间有三部分内容:

    (一)资源文件的定义

    资源文件放在res/calues目录下,(文件名任意,一般设置为attrs.xml)示例代码:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <!--定义属性  -->
        <attr name="titleName"/>
        <attr name="numberOne"/>
          <attr name="numberTwo"/>
          <!--定义styleable对象来组合多个属性  -->
          <declare-styleable name="MyViewStyle">
              <attr name="titleName"/>
              <attr name="numberOne"/>
          </declare-styleable>
    
        </resources>

    (二)自定义组件的创建MyView,以及获取资源数据的设置,主要代码:

    //获取styleable资源对象
            TypedArray typeArray=context.obtainStyledAttributes(attrs,R.styleable.MyViewStyle);
            //获取styleable资源对象里面的字符串
            String name=typeArray.getString(R.styleable.MyViewStyle_titleName);
            //获取styleable资源对象里面的数字
            int numberOne=typeArray.getInt(R.styleable.MyViewStyle_numberOne, 0);

           上面styleable中是字符串还是数字是一般由布局文件中来设置就可以(属性值后面的值有字母或符号就是字符串,),当然也可以在资源文件中定义好,比如上面资源文件中

     <!--定义属性  -->
        <attr name="titleName"  format="string"/>
        <attr name="numberOne"  format="integer"/>

           这时如果布局文件中的numberOne为字符串时也是会报错!

    (三)布局文件的设计

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:myxmlns="http://schemas.android.com/apk/res/com.example.attribute"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
         >
        <!--使用自定义组件,并指定属性资源文件中的属性  -->
        <com.example.attribute.MyView
             android:layout_width="match_parent"
            android:layout_height="20dp"
            android:background="#f00"
            myxmlns:titleName="这是我的测试命名空间的标题"
            myxmlns:numberOne="100"
            myxmlns:numberTwo="200"
            />
    
    </LinearLayout>

    上面有两个关键的地方要注意:
           一个是命名空间的定义,这里名称myxmlns是任意定义的,但是”=”后面的固定格式:”http://schemas.android.com/apk/res/+自定义组件的包名。
           另一个是命名空间后面的属性,必须要在资源文件中定义好,如下:

    <!--定义属性  -->
         <attr name="titleName"/>
         <attr name="numberOne"/>
         <attr name="numberTwo"/>

    之后这里才能在布局文件中设置的就是这三个属性:

            myxmlns:titleName="这是我的测试命名空间的标题"
            myxmlns:numberOne="100"
            myxmlns:numberTwo="200"

           如果没有定义好直接设置是后报错的,比如这里写:
           myxmlns:numberThree=”300”,因为numberThree没有在资源文件中定义!

    到这里Android命名空间的知识点就大概介绍完毕了。
    下面是介绍两个示例程序:

    二.命名空间的属性值的获取

    (一)資源文件的定义,文件名attrs.xml在res/values目录下

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <!--定义属性  -->
        <attr name="titleName"  format="string"/>
        <attr name="numberOne"  format="integer"/>
          <attr name="numberTwo"/>
          <!--定义styleable对象来组合多个属性  -->
          <declare-styleable name="MyViewStyle">
              <attr name="titleName"/>
              <attr name="numberOne"/>
          </declare-styleable>
    
          <!--   定义styleable2对象来组合多个属性  -->
          <declare-styleable name="MyViewStyle2">
              <attr name="titleName"/>
              <attr name="numberOne"/>
               <attr name="numberTwo"/>
          </declare-styleable> 
        </resources>

           上面可以创建多个styleable组合,组合里面可以有一个或多个定义好的属性。

    (二)自定义组件的设计

    package com.example.attribute;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.View;
    
    public class MyView extends View{
    
        public MyView(Context context, AttributeSet attrs) {
            super(context, attrs);
            //获取styleable资源对象
            TypedArray typeArray=context.obtainStyledAttributes(attrs,R.styleable.MyViewStyle);
            //获取styleable资源对象里面的字符串
            String name=typeArray.getString(R.styleable.MyViewStyle_titleName);
            //获取styleable资源对象里面的数字
            int numberOne=typeArray.getInt(R.styleable.MyViewStyle_numberOne, 0);
    
            //获取第二组styleable资源对象
            TypedArray typeArray2=context.obtainStyledAttributes(attrs,R.styleable.MyViewStyle2);
            String name2=typeArray2.getString(R.styleable.MyViewStyle2_titleName);
            int numberOne2=typeArray2.getInt(R.styleable.MyViewStyle2_numberOne, 1);
            int numberTwo2=typeArray2.getInt(R.styleable.MyViewStyle2_numberTwo, 2);
    
            //打印第一组styleable资源对象里面的数据
             Log.e("TAG","typeArray中titleName="+name+",numberOne="+numberOne);
             ///打印第二组styleable资源对象里面的数据
             Log.e("TAG","typeArray2中titleName="+name+",numberOne="+numberOne+",numberTwo="+numberTwo2);
    
        }
        public MyView(Context context) {
            super(context);
    
        }
    
    }

    (三)布局文件activity_main.xml中的调用

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:myxmlns="http://schemas.android.com/apk/res/com.example.attribute"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
         >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="命名空间" />
        <!--使用自定义组件,并指定属性资源文件中的属性  -->
        <com.example.attribute.MyView
             android:layout_width="match_parent"
            android:layout_height="20dp"
            android:background="#f00"
            myxmlns:titleName="这是我的测试命名空间的标题"
            myxmlns:numberOne="100"
            myxmlns:numberTwo="200"
            />
    
    </LinearLayout>

           这里MainActivity中没有什么代码就不写了,但是oncreate中的setContentView(R.layout.activity_main);是不能少的!
    运行程序后,显示的界面:
    j1
    上面没啥内容,重点是资源数据的获取,下面是Log的数据:
    j2
           到这里资源文件的数据就能成功获取了!Android命名空间的使用也是简单演示使用了一遍!

    三.下面是命名空间的一个简单应用

           设计一个自定义的ImageView图片组件,在布局文件中设计几秒后完全显示它的图片!
    效果:
    s3
    设计过程:

    (一)资源文件的定义

    资源文件放在res/calues目录下,attrs.xml代码:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <!--定义属性  -->
        <attr name="duration"  format="integer"/>
          <!--定义styleable对象来组合一个或多个属性  -->
          <declare-styleable name="MyViewStyle">
              <attr name="duration"/>
          </declare-styleable>
    
        </resources>

    (二)自定义组件的设计

    package com.example.attribute2;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.os.Handler;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.widget.ImageView;
    
    public class MyImageView extends ImageView{
        //图片透明度每次改变的大小
        int alphaDelta=0;
        //记录图片当前的透明度
        int curAlpha=0;
        //每隔多少秒改变一次
        final int SPEED=300;//300毫秒改变一次透明度
        public MyImageView(Context context, AttributeSet attrs) {
            super(context, attrs);
            //获取styleable资源对象
            TypedArray typeArray=context.obtainStyledAttributes(attrs,R.styleable.MyViewStyle);
    
            //获取styleable资源对象里面的数字
            int duration=typeArray.getInt(R.styleable.MyViewStyle_duration, 1000);
            Log.e("TAG","duration="+duration);
            //计算每次改变的透明度的大小
             alphaDelta=255*SPEED/duration;
             setImageAlpha(curAlpha);//刚开始不显示
            //按发送消息,通知系统改变图片的透明度
             handler.sendEmptyMessageDelayed(111, SPEED);
    
        }
        public MyImageView(Context context) {
            super(context);
    
        }
        Handler handler=new Handler(){
            public void handleMessage(android.os.Message msg) {
                if (msg.what==111) {
                    if (curAlpha>=255) {
                        curAlpha=255;
                        MyImageView.this.setImageAlpha(curAlpha);
                        handler.removeMessages(111);
                    }else{
                        //每次增加curAlpha的值
                    curAlpha+=alphaDelta;
                    MyImageView.this.setImageAlpha(curAlpha);
                    Log.e("TAG","curAlpha="+curAlpha);
    
                    //按发送消息,通知系统改变图片的透明度
                     handler.sendEmptyMessageDelayed(111, SPEED);//这里是自己给自己发消息!
                    }
    
                }
    
            };
        };
    
    }

           上面图片每次透明度的改变可以用定时器来设计,但是定时器要用到子线程,有时程序退出线程还在执行,所以我一般尽量少用线程相关的。

    (三)布局文件activity_main.xml中的调用

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myxmlns="http://schemas.android.com/apk/res/com.example.attribute2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
         >
    
        <TextView
    
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="这是一个慢慢显示的图片" />
        <!--使用自定义组件,并指定属性资源文件中的属性  -->
        <com.example.attribute2.MyImageView
            android:src="@drawable/yts"
             android:layout_width="match_parent"
            android:layout_height="match_parent"
            myxmlns:duration="6000"
    
            />
    
    </LinearLayout>
    

    (四)主方法的代码很简单:

    package com.example.attribute2;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }

           上面程序中可以看到程序的调用是很方便的,只要把自定义的组件复制进去后,可以直接在布局文件中调用和设置组件的参数。这也许就是命名空间的方便的地方,也就是调用方便(方便调用者),但是设计起来还是要写多一些代码。

    三.Android命名空间的总结

    (一)资源文件中的知识

    定义资源文件示例代码:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <!--定义属性  -->
        <attr name="titleName"/>
        <attr name="numberOne"/>
          <attr name="numberTwo"/>
          <!--定义styleable对象来组合多个属性  -->
          <declare-styleable name="MyViewStyle">
              <attr name="titleName"/>
              <attr name="numberOne"/>
          </declare-styleable>      
        </resources>

    布局文件的示例代码:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:myxmlns="http://schemas.android.com/apk/res/com.example.attribute"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
         >
        <!--使用自定义组件,并指定属性资源文件中的属性  -->
        <com.example.attribute.MyView
             android:layout_width="match_parent"
            android:layout_height="20dp"
            android:background="#f00"
            myxmlns:titleName="这是我的测试命名空间的标题"
            myxmlns:numberOne="100"
            myxmlns:numberTwo="200"
            />
    
    </LinearLayout>

    1.attr元素作用:

           定义一个属性,可以在布局文件中使用命名空间的名称结合属性定义属性的具体值。

    2.declare-styleable子元素:

           定义一个styleable对象,每个styleable对象就是一组attr属性的集合,里面可以定义多个定义好的属性,使用java代码可以获取该组集合里面属性的值。
           命名空间资源文件代码的文件的命名也是任意的,但是为了更好标识一般写attrs.xml

    (二)命名空间xmlns的名称:

           名称是可以任意的,下面使用的命名空间名称也是上面必须的,上面的命名空间名称是myxmlns。
           xmlns表示的是命名空间的意思,这里可以看到根布局中必须要有一个android的命名空间,并且格式也是固定的,只有定义了android系统的命名空间才能使用android中某些组件的的属性,比如android:textSize=“18” 后android:backColor=“#f00”等等。

    (三)最后强调一下命名空间的作用:

           命名空间可以直接在布局文件中定义好自定义属性的一些属性,调用时只要在布局文件中设置属性,而不用再去代码中设置,但是自定义组件中必须要做代码处理(获取和设置!)。
           简单的说就是提前做处理,调用方便!
           但是正常开发的程序中很少用到
           除非是你经常要用到打自定义组件,并且要设置多个属性值,可以考虑使用命名空间,简化调用程序步骤!

    展开全文
  • 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存 [1].C++中使用new()来创建对象,分配内存。使用delete()删除之前由new()分配内存。 举例: #include <iostream> using namespace std; ...

    1、动态内存

    跟java,php等语言相同。

    栈:在函数内部声明的所有变量都将占用栈内存。

    堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存

    [1].C++中使用new()来创建对象,分配内存。使用delete()删除之前由new()分配的内存。

    举例:

    #include <iostream>

    using namespace std;

    int main ()

    {

       double* pvalue  = NULL; // 初始化为 null 的指针

       pvalue  = new double;   // 为变量请求内存

       *pvalue = 29494.99;     // 在分配的地址存储值

       cout << "Value of pvalue : " << *pvalue << endl;

       delete pvalue;         // 释放内存

       return 0;

    }

    [2].数组的动态内存分配

    一位数组:

    int *array=new int [m]; // 动态分配,数组长度为 m

    delete [] array; //释放内存

     

    二维数组

    int **array

    array = new int *[m]; // 假定数组第一维长度为 m, 第二维长度为 n

    for( int i=0; i<m; i++ )

    {

        array[i] = new int [n] ;

    }

    //释放

    for( int i=0; i<m; i++ )

    {

        delete [] array[i];

    }

    delete [] array;

    2、命名空间

    命名空间的概念跟php相同,不再多说,只看c++中的使用方法。

    [1].命名空间的定义

    namespace namespace_name {

       // 代码声明

    }

    [2].调用带有命名空间的函数或变量

    name::code;  // code 可以是变量或函数

    [3].using指令

    使用using指令,来使用命名空间,如:using namespace std;

    [4].命名空间可以嵌套使用。

    展开全文
  • 命名空间在其它编程语言中其名称不尽相同,但其核心慨念都是自定义一个存储空间。避免类名重复系统无法判断该执行哪一个类或是哪一个函数。 举例说明下。我先创建test这个文件夹在其当前目录下再创建一个index.php...
  • namespce命名空间主要用途 用来解决命名冲突问题 1.命名空间下可以放函数,变量,结构体,类; 2.//命名空间必须定义在全局作用域下 3.命名空间可以嵌套命名空间 举例: 有两个头文件,分别为game1.h 和game2.h,...
  • spring中的p命名空间就是为了更加方便的使用set方法注入属性内容 举例说明: User实体类 public class User { private String name; private int age; public String getName() { return name; } public ...
  • 命名空间

    2018-12-31 14:19:00
    locals:是函数内的命名空间,包括局部变量和形参(若在函数外面使用则等同于globals) globals:全局变量,函数定义所在模块名称空间 builtins:内置模块名字空间(打印(dir(__builtin...
  • XML 命名空间

    千次阅读 2018-11-23 23:30:20
    命名空间的作用 命名空间的作用是避免xml中元素命名的冲突。举例来说我们都可以定义自己的元素名,元素在一个xml文件里面它的含义是表格,在另一个xml文件里可以把它定义为桌子。示例如下代码:表格里可以有&...
  • 浅谈c++命名空间

    2020-05-24 21:42:00
    命名空间 在c/c++中我们经常会遇到这样的情况 比如 类 ...定义命名空间,需要使用到的是namespace关键字,后面跟的是命名空间的名字,然后跟{}即可,{}中即为命名空间的成员 官方的解释不够直观 ,我们来举例说明 ..
  • 一、命名空间概述1、什么...2、定义命名空间的要求使用namespace关键字,来声明一个命名空间;所有代码都可以存在于命名空间中,但是,只有三种代码会受到空间影响:类、常量(const)、函数。除了类、常量、函数代码...
  • 举例来讲, system.IO命名空间包含了有关文件I/O类型;  system.Data命名空间定义了基本数据库类型,等等 所以,一个程序集(比如mscorlib.dll)可以包含任意个命名空间,每个命名空间又可以包含多种类型。 ...
  • 1、Spring启动流程中,获取beanfatory时候会进行xml文件读取,其中命名空间与xml校验使用了META-INF下文件: 以beans举例: 理论上应该长上面那样。但是我打的jar包里面: 查了一下,说是打包...
  • 大括号语法匿名空间使用命名空间2. 访问命名空间中元素方式: 命名空间 介绍 命名空间是一种封装事务方法,例如:函数、类、方法等。 命名空间作用:用来解决类名或应用程序名冲突问题。举例:项目中会用...
  • 解决:c++使用命名空间概念,将全局作用域划分成一个个分立域,这样就解决全局变量命名冲突问题 命名空间 空间命名方法: namespace xxx { int i; } //分配一个命名空间xxx,内部有i变量 使用方法: 方法1 using ...
  • Xml_Schema命名空间详解

    千次阅读 2016-01-13 14:01:57
    XML命名空间属性被放置于元素开始标签之中,并使用以下语法: xmlns:namespace-prefix="namespaceURI" 举例   当命名空间被定义在元素开始标签中时,所有带有相同前缀子元素都会与同一个...
  • 1、命名空间作用:防止(变量名、函数名、类名)发生命名冲突。 2、举例 生活例子:当一个班上有两个名叫 Zara 学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外信息,比如他们家庭住址,...
  • 提供类的命名空间,解决类命名冲突,类文件管理问题 2.使用举例 2.1 自测代码 (1) package 必须做为源文件第一条非注释语句 (2) 一个源文件只能有一个包 (3) 没有显示指定则处于默认包下 (4) 同包下...
  • 二、定义命名空间的要求 使用namespace关键字,来声明一个命名空间; 所有的代码都可以存在于命名空间中,但只有三种代码会受影响:常量(const)、函数、类; 声明命名空间的语句,必须是PHP脚本的第一行...
  • 2、定义命名空间的要求 使用namespace关键字,来声明一个命名空间; 所有代码都可以存在于命名空间中,但是,只有三种代码会受到空间影响:类、常量(const)、函数。 除了类、常量、函数代码外,其它代码可以写在...
  • 在函数中复制变量默认都是被分配到局部命名空间。 局部命名空间实在函数被调用时被创建,函数参数会立即填入该命名空间。 函数执行完毕后,局部命名空间被销毁。 举例来说,下面这行代码会报错,因为在函数运行...
  • 便于区分相同idSQL操作当多个xxxMapper.xml文件中id值相同时,在使用SqlSession操作数据库时,mybatis就无法分辨我们要调用哪个id操作。在调用时采用“namespace.id”方式便有利于区分。举例如下:...
  • 1、命名空间的作用? 防止变量名、函数名、类名发生命名冲突。 2、如何定义命名空间? namespace + 空间名 + { } 3、如何使用命名空间? 命名空间名 + :: + 变量名或函数名 !!(注意:命名空间可以嵌套使用) 4...
  • .net中C#命名空间System.Security.Cryptography简记前言System.Security.Cryptography==核心步骤代码==加密算法对称加密算法DESTripleDESAES/RijndaelRC2RC4具体使用方法加密网络数据非对称加密算法RSADSA加密哈希...
  • 在JAVA中,如果一个类,方法,属性被设置成protected,表明只能在子类或者同一个命名空间中才能使用,但我们可以巧妙利用特殊编码方式,在其他的命名空间下,创造同一个命名空间,从而访问 protected 代表类...
  • 为了解决命名冲突 ,C++中引入了命名空间,所谓命名空间就是一个可以由用户自己定义作用域,在不同作用域中可以定义相同名字变量,互不干扰,系统能够区分它们。 缺省参数 缺省参数是声明或定义函数时为函数...
  • HashTable使用举例--C#

    2014-06-24 17:08:00
    在.NET Framework中,Hashtable是System.Collections命名空间提供一个容器,用于处理和表现类似keyvalue键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key值。Hashtable中key...
  • 使用SAXReader需要导入dom4j-full.jar包。  dom4j是一个JavaXML API,类似于jdom,用来读写XML文件。dom4j是一个非常非常优秀Java XML API,具有性能优异、功能强大和... 使用举例: 1. s.xml内容 [x
  • 自由方法,类中一个普通函数,由类所在命名空间管理,类对象独享# 4.静态方法,类中一个普通函数,由类对象和实例对象所共享# 5.保留方法,由双下划线开始和结束,保留使用,如__len__()1.实例方法,实例对象方...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 264
精华内容 105
关键字:

命名空间的使用举例