【快播报】为什么需要命名空间?使用命名空间解决名字冲突
一、为什么需要命名空间(问题提出)
命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。
在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。
(资料图)
1、全局变量的作用域是整个程序,在同一作用域中不应有两个或多个同名的实体(enuty),包括变量、函数和类等。
例:如果在文件中定义了两个类,在这两个类中可以有同名的函数。在引用时,为了区别,应该加上类名作为限定:
class A//声明A类
{public:
void funl();//声明A类中的funl函数
private:
int i; };
void A::funl() //定义A类中的funl函数
{…………}
class B //声明B类
{public:
void funl(); //B类中也有funl函数
void fun2(); };
void B::funl() //定义B类中的funl函数
{ …………}
这样不会发生混淆。
在文件中可以定义全局变量(global variable),它的作用域是整个程序。如果在文件A中定义了一个变量aint a=3;
在文件B中可以再定义一个变量aint a=5;
在分别对文件A和文件B进行编译时不会有问题。但是,如果一个程序包括文件A和文件B,那么在进行连接时,会报告出错,因为在同一个程序中有两个同名的变量,认为是对变量的重复定义。
可以通过extern声明同一程序中的两个文件中的同名变量是同一个变量。如果在文件B中有以下声明:
extem int a;
表示文件B中的变量a是在其他文件中已定义的变量。由于有此声明,在程序编译和连接后,文件A的变量a的作用域扩展到了文件B。如果在文件B中不再对a赋值,则在文件B中用以下语句输出的是文件A中变量a的值: cout<<A; 得到a的值为3<="" p="">
2、程序中就会出现名字冲突。
在简单的程序设计中,只要人们小心注意,可以争取不发生错误。但是,一个大型的应用软件,往往不是由一个人独立完成的,而是由若干人合作完成的,不同的人分别完成不同的部分,最后组合成一个完整的程序。假如不同的人分别定义了类,放在不同的头文件中,在主文件(包含主函数的文件)需要用这些类时,就用#include命令行将这些头文件包含进来。由于各头文件是由不同的人设计的,有可能在不同的头文件中用了相同的名字来命名所定义的类或函数。
例4 名字冲突
程序员甲在头文件headerl.h中定义了类 Student和函数fun。
// 例4中的头文件header1(头文件1,没其文件名为cc8-4-h1.h)
#include
#include
using namespace std;
class Student //声明Student类
{public:
Student(int n,string nam,int a)
{num=n;name=nam;age=a;}
void get_data();
private:
int num;
string name;
int age; };
void Student::get_data() //成员函数定义
{ cout<<NUM<<" p="" ?<<name<double fun(double a,double b)//定义全局函数(即外部函数)
{ return sqrt(a+b);}
在 main函数所在的文件中包含头文件headerl.h:
#include
using namespace std;
#include "header1.h" //注意要用双引号,因为文件一般是放在用用户目录中的
int main()
{Student stud1(101,"Wang",18); //定义类对象studl
stud1.get_data();
cout<<FUN(5,3)<<ENDL;< p="">
return 0; }
程序 能正常运行,输出为
101 Wang 18
2.82843
如果程序员乙写了头文件header2.h,在其中除了定义其他类以外,还定义了类Student和函数fun,但其内容与头文件headerl.h中的 Student和函数fun有所不同。
// 例4中的头文件header2
#include
#include
using namespace std;
class Student //声明Student类
{ public:
Student(int n,string nam,char s) //参数与headerl中的student不同
{ num=n;name=nam;sex=s;}
void get_data();
private:
int num;
string name;
char sex; };//此项与headerl不同
void Student::get_data() //成员函数定义
{ cout<<NUM<<" p="" ?<<name<
double fun(double a,double b) //定义全局函数
{ return sqrt(a-b);} //返回值与headerl中的fun函数不同
//头文件2中可能还有其他内容
假如主程序员在其程序中要用到headerl.h中的Student和函数fun,因而在程序中包含了头文件headerl.h,同时要用到头文件 header2.h中的一些内容(但对header2.h中包含与headerl.h中的Student类和fun函数同名而内容不同的类和函数并不知情,因为在一个头文件中往往包含许多不同的信息,而使用者往往只关心自己所需要的部分,而不注意其他内容),因而在程序中又包含了头文件 header2.h。如果主文件(包含主函数的文件)如下:
#include
using namespace std;
#include "header1.h"//包含头文件l
#include "header2.h"//包含头文件2
int main()
{ Student stud1(101,"Wang",18);
stud1.get_data();
cout<<FUN(5,3)<<ENDL;< p="">
return 0; }
这时程序编译就会出错。因为在预编译后,头文件中的内容取代了对应的#include命令行,这样就在同一个程序文件中出现了两个Student类和两个 fun函数,显然是重复定义,这就是名字冲突,即在同一个作用域中有两个或多个同名的实体。
3、全局命名空间污染(global namespace pollution)。
在程序中还往往需要引用一些库(包括C++编译系统提供的库、由软件开发商提供的库或者用户自己开发的库),为此需要包含有关的头文件。如果在这些库中包含有与程序的全局实体同名的实体,或者不同的库中有相同的实体名,则在编译时就会出现名字冲突。
为了避免这类问题的出现,人们提出了许多方法,例如:将实体的名字写得长—些(包含十几个或几十个字母和字符);把名字起得特殊一些,包括一些特殊的字符;由编译系统提供的内部全局标识符都用下划线作为前缀,如_complex(),以避免与用户命名的实体同名;由软件开发商提供的实体的名字用特定的字符作为前缀。但是这样的效果并不理想,而且增加了阅读程序的难度,可读性降低了。
C 语言和早期的C++语言没有提供有效的机制来解决这个问题,没有使库的提供者能够建立自己的命名空间的工具。人们希望ANSI C++标准能够解决这个问题,提供—种机制、一种工具,使由库的设计者命名的全局标识符能够和程序的全局实体名以及其他库的全局标识符区别开来。
二、什么是命名空间(解 决方案)
命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
如: namespace ns1 //指定命名中间nsl
{ int a;
double b; }
namespace 是定义命名空间所必须写的关键字,nsl 是用户自己指定的命名空间的名字(可以用任意的合法标识符,这里用ns1是因为ns是namespace的缩写,含义请楚),在花括号内是声明块,在其中声明的实体称为命名空间成员(namespace member)。现在命名空间成员包括变量a和b,注意a和b仍然是全局变量,仅仅是把它们隐藏在指定的命名空间中而已。如果在程序中要使用变量a和b,必须加上命名空间名和作用域分辨符“::”,如nsl::a,nsl::b。这种用法称为命名空间限定(qualified),这些名字(如nsl::a)称为被限定名 (qualified name)。C++中命名空间的作用类似于操作系统中的目录和文件的关系,由于文件很多,不便管理,而且容易重名,于是人们设立若干子目录,把文件分别放到不同的子目录中,不同子目录中的文件可以同名。调用文件时应指出文件路径。
命名空间的作用:是建立一些互相分隔的作用域,把一些全局实体分隔开来。以免产生老点名叫李相国时,3个人都站起来应答,这就是名字冲突,因为他们无法辨别老师想叫的是哪一个李相国,同名者无法互相区分。为了避免同名混淆,学校把3个同名的学生分在3个班。这样,在小班点名叫李相国时,只会有一个人应答。也就是说,在该班的范围(即班作用域)内名字是惟一的。如果在全校集合时校长点名,需要在全校范围内找这个学生,就需要考虑作用域问题。如果校长叫李相国,全校学生中又会有3人一齐喊“到”,因为在同一作用域中存在3个同名学生。为了在全校范围内区分这3名学生,校长必须在名字前加上班号,如高三甲班的李相国,或高三乙班的李相国,即加上班名限定。这样就不致产生混淆。
可以根据需要设置许多个命名空间,每个命名空间名代表一个不同的命名空间域,不同的命名空间不能同名。这样,可以把不同的库中的实体放到不同的命名空间中,或者说,用不同的命名空间把不同的实体隐蔽起来。过去我们用的全局变量可以理解为全局命名空间,独立于所有有名的命名空间之外,它是不需要用 namespace声明的,实际上是由系统隐式声明的,存在于每个程序之中。
在声明一个命名空间时,花括号内不仅可以包括变量,而且还可以包括以下类型:
·变量(可以带有初始化);
·常量;
·数(可以是定义或声明);
·结构体;
·类;
·模板;
·命名空间(在一个命名空间中又定义一个命名空间,即嵌套的命名空间)。
例如
namespace nsl
{const int RATE=0.08; //常量
doublepay;//变量
doubletax()//函数
{return a*RATE;}
namespacens2//嵌套的命名空间
{int age;}
}
如果想输出命名空间nsl中成员的数据,可以采用下面的方法:
cout<<nsl::rate<<endl;< p="">
cout<<nsl::pay<<endl;< p="">
cout<<nsl::tax()<<endl;< p="">
cout<<nsl::ns2::age<<endl; p="" 需要指定外层的和内层的命名中间名<="">
可以看到命名空间的声明方法和使用方法与类差不多。但它们之间有一点差别:在声明类时在右花括号的后面有一分号,而在定义命名空间时,花括号的后面没有分号。
三、使用命名空间解决名字冲突(使用指南)
有了以上的基础后,就可以利用命名空间来解决名字冲突问题。现在,对例4程序进行修改,使之能正确运行。
例5 利用命名空间来解决例4程序名字冲突问题。
修改两个头文件,把在头文件中声明的类分别放在两个不同的命名空间中。
//例8.5中的头文件1,文件名为header1.h
using namespace std;
#include
#include
namespace ns1 //声明命名空间ns1
{ class Student //在命名空间nsl内声明Student类
{ public:
Student(int n,string nam,int a)
{ num=n;name=nam;age=a;}
void get_data();
private:
int num;
string name;
int age; };
void Student::get_data() //定义成员函数
{ cout<<NUM<<" p="" ?<<name<
double fun(double a,double b) //在命名空间n引内定义fun函数
{ return sqrt(a+b);}
}
//例 8.5中的头文件2,文件名为header2.h
#include
#include
namespace ns2 //声明命名空间ns2
{ class Student
{ public:
Student(int n,string nam,char s)
{ num=n;name=nam;sex=s;}
void get_data();
private:
int num;
string name;
char sex; };
void Student::get_data()
{ cout<<NUM<<" p="" ?<<name<
double fun(double a,double b)
{ return sqrt(a-b);}
}
//main file
#include
#include "header1.h" //包含头文件l
#include "header2.h" //包含头文件2
int main()
{ ns1::Student stud1(101,"Wang",18);//用命名空间nsl中声明的Student类定义studt
stud1.get_data(); //不要写成ns1::studl.get_data();
cout<<ns1::fun(5,3)<<endl; p="" 调用命名空间ns1中的fun函数<="">
ns2::Student stud2(102,"Li","f"); //用命名空间ns2中声明的 Student类定义stud2
stud2.get_data();
cout<<ns2::fun(5,3)<<endl; p="" 调用命名空间nsl,中的fun函数<="">
return 0; }
解决本题的关键是建立了两个命名空间nsl和ns2,将原来在两个头文件中声叫的类分别放在命名空间nsl和ns2中。注意:在头文件中,不要把#include命令放在命名空间中,在上一小节的叙述中可以知道,命名空间中的内容不包括命令行,否则编译会出错。
分析例4程序出错的原因是:在两个头文件中有相同的类名Student和相同的函数名fun,在把它们包含在主文件中时,就产生名字冲突,存在重复定义。编译系统无法辨别用哪一个头文件中的Student来定义对象studl。现在两个Student和fun分别放在不同的命名空间中,各自有其作用域,互不相干。由于作用域不相同,不会产:生名字冲突。正如同在两个不同的类中可以有同名的变量和函数而不会产生冲突一样。
在定义对象时用ns1::Student(命名空间nsl中的Student)来定义studl,用ns2::Student(命名空间ns2中的 Student)来定义stud2。显然,nsl::Student和ns2::Student是两个不同的类,不会产生混淆。同样,在调用fun函数时也需要用命名空间名ns]或ns2加以限定。ns1::fun()和ns2::fun()是两个不同的函数。注意:对象studl是用 nsl::Student定义的,但对象studl并不在命名空间nsl中。studl的作用域为main函数范围内。在调用对象studl的成员函数 get_data时,应写成studl.get_data(),而不应写成nsl::studl.get_data()。
程序 能顺利通过编译,并得到以下运行结果:
101 Wang l9 (对象studl中的数据)
2.82843 (/5+3的值)
102 Li f (对象studg中的数据)
1.41421 (/5-2的值)
四、使用命名空间成员的方法
从上面的介绍可以知道,在引用命名空间成员时,要用命名空间名和作用域分辨符对命名空间成员进行限定,以区别不同的命名空间中的同名标识符。即:
命名空间名::命名空间成员名
这种方法是有效的,能保证所引用的实体有惟一的名字。但是如果命名空间名字比较长,尤其在有命名空间嵌套的情况下,为引用一个实体,需要写很长的名字。在一个程序中可能要多次引用命名空间成员,就会感到很不方便。
1 、使用命名空间别名
可以为命名空间起一个别名(namespace alias),用来代替较长的命名空间名。如
namespace Television //声明命名空间,名为Television
{ ... }
可以用一个较短而易记的别名代替它。如:
namespace TV=Television; //别名TV与原名Television等价
也可以说,别名TV指向原名Television,在原来出现Television的位置都可以无条件地用TV来代替。
2、使用using命名空间成员名
using后面的命名空间成员名必须是由命名空间限定的名字。例如:
using nsl::Student;
以上语句声明:在本作用域(using语句所在的作用域)中会用到命名空间ns1中的成员Student,在本作用域中如果使用该命名空间成员时,不必再用命名空间限定。例如在用上面的using声明后,在其后程序中出现的Student就是隐含地指nsl::Student。
using声明的有效范围是从using语句开始到using所在的作用域结束。如果在以上的using语句之后有以下语句:
Student studl(101,"Wang",18); //此处的Student相当于ns1::Student
上面的语句相当于
nsl::Student studl(101,"Wang",18);
又如
using nsl::fun; //声明其后出现的fun是属于命名空间nsl中的fun
cout<<FUN(5,3)<<ENDL; p="" 此处处的fun函数相当于nsl::fun(5,3)<="">
显然,这可以避免在每一次引用命名空间成员时都用命名空间限定,使得引用命名空间成员变得方便易用。
但是要注意:在同一作用域中用using声明的不同命名空间的成员中不能有同名的成员。例如:
usmgnsl::Student; //声明其后出现的Student是命名空间nsl中的Student
usmgns2::Student; //声明其后出现的Student是命名空间ns2小的Student
Student stud1; //请问此处的Student是哪个命名中间中的Student?
产生了二义性,编译出错。
3、使用using namespace命名空间名
用上面介绍的using命名空间成员名,一次只能声明一个命名空间成员,如果在一个命名空间中定义了10个实体,就需要使用10次using命名空间成员名。能否在程序中用一个语句就能一次声明一个命名空间中的全部成员呢?
C++提供了using namespace语句来实现这一目的。using namespace语句的一般格式为
using namespace 命名空间名;
例如
using nanlespace nsl;
声明了在本作用域中要用到命名空间nsl中的成员,在使用该命名空间的任何成员时都不必用命名空间限定。如果在作了上面的声明后有以下语句:
Student studl(101,”Wang”,18); //Student隐含指命名中间nsl中的Student
cout<<FUN(5,3)<<ENDL; p="" 这里的fun函数是命名中间="" nsl中的fun函数<="">
在用usmgnamespace声明的作用域中,命名空间nsl的成员就好像在全局域声明的一样。因此可以不必用命名空间限定。显然这样的处理对写程序比较方便。但是如果同时用usingnamespace声明多个命名空间时,往往容易出错。例5中的main函数如果用下面程序段代替,就会出错。
int main()
{ using namespace nsl;//声明nsl中的成员在本作用域中可用
using namespace ns2;//声明ns2中的成员在本作用域中可用
Student studl(101,”Wang",18);
studl.8ct_data();
cout<<FUN(5,3)<<ENDL;< p="">
Student stud2(102,"Li","r");
stud2.get_data();
coutt<<FUN(5,3)<<ENDL;< p="">
return O; }
因为在同一作用域中同时引入了两个命名空间nsl和ns2,其中有同名的类和函数。在出现Student时,无法判定是哪个命名空间中的 Student,出现二义性,编译出错。因此只有在使用命名空间数量很少,以及确保这些命名空间中没有同名成员时才用using namespace语句。
五、无名的命名空间
以上介绍的是有名字的命名空间,C++还允许使用没有名字的命名空间,如在文件A中声明了以下的无名命名空间:
namespace //命名空间没有名字
{ void fun( ) //定 义命名空间成员
{ cout<<"OK."<<ENDL;}< p="">
}
由于命名空间没有名字,在其他文件中显然无法引用,它只在本文件的作用域内有效。无名命名空间的成员fun函数的作用域为文件A(确切地说,是从声明无名命名空间的位置开始到文件A结束)。在文件A中使用无名命名空间的成员,不必(也无法)用命名空间名限定。
如果 在文件A中有以下语句:
fun();
则执行无名命名空间中的成员fun函数,输出”OK.”。
在本程序中的其他文件中也无法使用该fun函数,也就是把fun函数的作用域限制在本文件范围中。可以联想到:在C浯言中可以用static声明一个函数,其作用也是使该函数的作用域限于本文件。C++保留了用static声明函数的用法,同时提供了用无名命名空间来实现这一功能。随着越来越多的C++ 编译系统实现了ANSI C++建议的命名空间的机制,相信使用无名命名空间成员的方法将会取代以前习惯用的对全局变量的静态声明。
六、标准命名空间std
为了解决C++标准库中的标识符与程序中的全局标识符之间以及不同库中的标识符之间的同名冲突,应该将不同库的标识符在不同的命名空间中定义(或声明)。标准C++库的所有的标识符都是在一个名为std的命名空间中定义的,或者说标准头文件(如iostream)中函数、类、对象和类模板是在命名空间 std中定义的。std是standard(标准)的缩写,表示这是存放标准库的有关内容的命名空间,含义请楚,不必死记。
这样,在程序中用到C++标准库时,需要使用std作为限定。如
std::cout<<"OK."<<ENDL; p="" 声明cout是在命名空间std中定义的流对象<="">
在有的C++书中可以看到这样的用法。但是在每个cout,cm以及其他在std中定义的标识符前面都用命名空间std作为限定,显然是很不方便的。在大多数的C++程序中常用usmgnamespace语句对命名空间std进行声明,这样可以不必对每个命名空间成员一进行处理,在文件的开头加入以下 using namespace声明:
using namespace std;
这样,在std中定义和声明的所有标识符在本文件中都可以作为全局量来使用。但是应当绝对保证在程序中不出现与命名空间std的成员同名的标识符,例如在程序中不能再定义一个名为cout的对象。由于在命名空间std中定义的实体实在太多,有时程序设计人员也弄不请哪些标识符已在命名空间std中定义过,为减少出错机会,有的专业人员喜欢用若干个"using命名空间成员”声明来代替“using namespace命名空间”声明,如
using Std::string;
using Std::cout;
using Std::cin;
等。为了减少在每一个程序中都要重复书写以亡的using声明,程序开发者往往把编写应用程序时经常会用到的命名空间std成员的usmg声明组成一个头文件,然后在程序中包含此头文件即可。
如果阅读了多种介绍C++的书,可能会发现有的书的程序中有using namespace语句,有的则没有。有的读者会提出:究竟应该有还是应该没有?应当说:用标准的C++编程,是应该对命名空间std的成员进行声明或限定的(可以采取前面介绍过的任一种方法)。但是目前所用的C++库大多是几年前开发的,当时并没有命名空间,库中的有关内容也没有放在std命名空间中,因而在程序中不必对std进行声明。
七、使用早期的函数库
C语言程序中各种功能基本上都是由函数来实现的,在C语言的发展过程中建立了功能丰富的函数库,C++从C语言继承了这份宝贵的财富。在C++程序中可以使用C语言的函数库。
如果要用函数库中的函数,就必须在程序文件中包含有关的头文件,在不同的头文件中,包含了不同的函数的声明。
在C++中使用这些 头文件有两种方法。
1、用C语言的传统方法
头文件名包括后缀.h,如stdio.h,math.h等。由于C语言没有命名空间,头文件并不存放在命名空间中,因此在C++程序文件中如果用到带后缀.h的头文件时,不必用命名空间。只需在文件中包含所用的头文件即可。如
#include
2、用C++的新方法
C++标准要求系统提供的头文件不包括后缀.h,例如iostream、string。为了表示与C 语言的头文件有联系又有区别,C++所用的头文件名是在C语言的相应的头文件名(但不包括后缀.h)之前加一字母c。例如,C语言中有关输入与输出的头文件名为stdio.h在C++中相应的头文件名为cstdio。C语言中的头文件math.h,在C++中相应的头文什名为cmath。C语言中的头文件 string.h在C++中相应的头文件名为cstring。注意在C++中,头文件cstnng和头文件strmg不是同一个文件。前者提供C语言中对字符串处理的有关函数(如strcmp,ctrcpy)的声明,后者提供C++中对字符串处理的新功能。
此外,由于这些函数都是在命名空间std中声明的,因此在程序中要对命名空间std作声明。如:
#include
#include
using namespace std;
目前所用的大多数C++编译系统既保留了c的用法,又提供丁C++的新方法。下面两种用法等价,可以任选。
C传 统方法 C++新方法
#include #include
#include #include
#include #include
using namespace std;
可以使用传统的c方法,但应当提倡使用C++的新方法。
标签:
相关推荐:
精彩放送:
- []回顾历史事件:首台通用电子计算机的发明者诞生 谷歌推出第一个涂鸦
- []全球热头条丨ABAP自定义截取字符串长度函数 截取字符串长度的函数
- []【快播报】为什么需要命名空间?使用命名空间解决名字冲突
- []pps是什么格式?洪恩MDF格式用什么软件打开?
- []【独家】html常用长度度量单位 度量长度的单位是什么?
- []
为什么要使用框架?使用软件框架的优点总结 - []12月9日科拓生物涨停分析:幽门螺杆菌概念,食品,宠物经济概念热股
- []招行信用卡旗下App全新上线 掌上生活9.0体验究竟如何
- []26.4%!晶科能源182TOPCon电池转换效率再创新高
- []王亚平女儿眼中的“航天女英雄”竟然是这样的!
- []WotoKOL卧兔周年,深耕海外网红营销五载
- []今日观点!世茂股份拟召开债券持有人会议,所有存续公司债12月9日开市起停牌
- []多家房企抛出股权融资方案 地产行业困境反转?
- []消息!又一家大行看多!摩根士丹利:中国股票将跑赢全球
- []金溢科技:关于股东人数情况,详见公司最近一期定期报告
- []格力地产调整重组方案:募集配套资金超8亿元,明日复牌
- []【播资讯】“小步快跑”供地风向标显现 武汉率先开启第六批集中供地
- []世界热点评!45个重点城市城镇化率:这六个城市超90%
- []世界热文:星辉娱乐:(1)近两年,受多种因素影响,公司收入和净利润有所下滑
- []全球速讯:被六省(市)纳入新冠肺炎诊疗方案的化痰止咳中药是怎样炼成的?
- []博雅生物:公司一直在积极推进浆站拓展工作,申请新设浆站存在不确定性,如公司获批新设,将及时披露
- []原油交易提醒:美国料陷入技术性衰退,需求减弱拖累油价五连阴
- []当前资讯!融创发布境外债务初步重组框架:拟将30至40亿美元借款转为普通股等
- []世界快看点丨内蒙一机:公司民品业务涉及铁路车辆及相关零部件,订单任务充足,重要合同签订情况均在临时公告中有披露
- []世界头条:二手房买家因卖家换掉家具拒付尾款遭起诉,法院:出卖人构成违约
- []2022财年亏损18.16亿,靠港府“续命”的香港海洋公园能走多远?
- []每日快看:大叶股份:公司综合考虑质量、性能、交期、价格等多个因素,汽油割草机零部件为全球化采购
- []晋亿实业:公司主要从事各类紧固件的研究和开发,生产销售各类紧固件、铁道扣件等产品,产品远销国内外
- []融创公布境外债重组重大进展 加速回到健康发展轨道
- []新力被债权人放弃了
- []房企融资“三箭齐发”,置业信心能否回暖?
- []【环球速看料】国际油价 7日 显著下跌
- []独立储能电站商业投资价值的识别与分析
- []甘肃多措并举保障冬季电力供应
- []天天快报!电化学储能是什么意思?电化学储能主要包括哪些?
- []焦点!成立1年,业务覆盖30+国家和地区!这家储能公司怎么这么猛?
- []今日看点:车险年底买是否优惠些 年底买车保险会不会优惠些
- []【全球热闻】美股异动 | 中概教育股普涨 新东方(EDU.US)涨超9%
- []【天天新要闻】定向增发+公司债 大名城抛出约50亿元再融资方案
- []保险报案有效期是多久 一般保险报案的有效期限是多长时间
- []保险不续费自动退保吗 保险要是不续费会自行退保吗
- []参保人就是被保险人吗 被保险人是不是参保人
- []公积金一定要留余额吗 公积金必须留余额吗
- []岁宝百货深圳宏发大世界购物广场门店提前终止租赁协议
- []天天滚动:2023年Q1全球计划运力预计达12亿,法国境内短途航班取消将为对手创造机会
- []头条:川润股份:12月7日公司高管李辉减持公司股份合计5.37万股
- []零售云平台多点数智赴港IPO 腾讯IDG是股东
- []【环球热闻】新湖中宝拟引入衢州国资 由控股股东出让不超过10%股权
- []科蓝软件:12月7日公司高管王安京减持公司股份合计14.84万股
- []全球快讯:龙佰集团:12月7日公司高管张海涛增持公司股份合计1600股
- []世界球精选!历时八个月 南京正式实施商品房预售资金监管新政
- []当前信息:北京银行与重点房地产企业签约,提供意向性融资总额2500亿元
- []环球焦点!格力地产重启收购珠海免税 构建三大业务板块
- []美国房地产大起大落后迎来投资机会
- []每日视点!新柴股份:12月7日公司高管周高峰减持公司股份合计2000股
- []北京银行:为万科、中海、招商等重点房企提供意向性融资总额2500亿元
- []快资讯丨佳力奇:加大自主创新力度 持续巩固技术堡垒
- []当前播报:群兴玩具:截止目前,公司未存在筹划重大资产重组等事项
- []现货黄金持稳,市场权衡两大前景,警惕通胀“挂自动挡”
- []环球今日报丨中指院: A股ESG报告披露率较低
- []人福医药:12月7日徐华斌减持公司股份合计13万股
- []每日快讯!越秀地产前11月合同销售1029.4亿元 完成年度销售目标83%
- []交建股份:11月28日至12月1日公司高管胡先宽、储根法、曹振明、陈明洋、施秀莹减持公司股份合计72.02万股
- []物业流拍、招租进行中,天桥百货觅新生
- []当前关注:合生创展前11月总合约销售额281.13亿元 同比下降27.73%
- []全球观热点:中指院:二十城物业服务收费稳中略升
- []新化股份:12月6日至12月7日公司高管方军伟减持公司股份合计8000股
- []宝龙地产前11月合约销售总额约379.3亿元
- []【天天新要闻】万通发展拟投资5亿元设立通信业务全资子公司
- []全球速读:沃森生物:公司近年来持续从销售体系建设、消费者教育、终端服务和渠道布局多维度打造产品品牌和市场影响力
- []大名城拟定增不超过30亿元 主要投向上海5个项目
- []天天热文:黄山胶囊:我公司根据相关法律、法规及规范性文件的规定标准进行信息披露
- []黄山胶囊:我公司与熊去氧胆酸胶囊暂无合作
- []【新要闻】中南建设三只债券获持有人会议通过 豁免美元债交叉违约
- []每日快报!大名城拟发行本金不超过20亿元的公司债券
- []全球即时看!落子布局电池租赁!宁德时代或许将用换电服务深度绑定车企
- []越秀地产:前11月合同销售额约为人民币1029.4亿元
- []环球快看:中华企业拟非公开发行股票不超过总股本30% 用于“保交楼“项目
- []德艺文创:截至2022年11月30日(目前最新数据)的股东人数为12,383
- []全球热门:中骏集团提前汇出12.87亿以兑付购房尾款ABS本息 年内公开债务“零违约”
- []环球报道:杭州规定保租房租金应低于同类房源市场价格 2023年1月5日起施行
- []全球动态:奥马电器:公司产品为冰箱冷柜,冰箱冷柜为居民生活必备的耐用消费品
- []全球速看:合肥搭建线上服务平台 开启“二手房互换”新模式
- []每日资讯:金石亚药:目前公司产能及备货充足,能够满足市场需求
- []实至名归,箭牌家居荣获行业唯一“2022国际CMF设计奖”金奖!
- []快资讯:虽迟但到 | 2022 环球旅讯峰会,12月底上海见
- []天天速递!图解贵金属及外汇:多空成本+最单边押注(2022/12/08周四)
- []热资讯!中骏安全度过行业低谷期,年内偿还境内外公开债务超70亿元
- []世界热门:豪森股份:公司2022年度向特定对象发行A股股票的定价基准日为发行期首日
- []财面儿丨中骏集团控股1-11月实现累计合同销售金额约544.42亿元
- []天天新动态:西安饮食:该公司并未实际开展业务
- []青岛中程:公司印尼工业园现场员工,克服多方困难,全力推进RKEF镍电项目剩余工程的建设,争取早日交付
- []天天日报丨财面儿|德信中国前11月累计合约销售金额336亿元
- []全球看热讯:物业丨卓越商企服务:全资附属公司收到仲裁通知书
- []【新要闻】比特币概念股票有哪些?2021年比特币概念股一览?
- []快消息!核电股票有哪些?2018核电概念股龙头有哪些?
- []当前快讯:股市熔断机制是什么意思?股市熔断机制有什么意义?
- []今日要闻!物业丨华润万象生活:与华润置地订立商业运营服务框架协议之补充协议
- []全球热议:钼板概念股是哪些?钼板股票一览?
- []资讯推荐:合力泰:公司目前未涉及该业务
- B站注册资本增幅400%至5亿 目前由陈睿全资持股
- 光源资本出任独家财务顾问 沐曦集成电路10亿元A轮融资宣告完成
- 巨轮智能2021年上半年营收11.24亿元 期内研发费用投入增长19.05%
- 红枣期货尾盘拉升大涨近6% 目前红枣市场总库存约30万吨
- 嘉银金科发布2021年Q2财报 期内净利润达1.27亿元同比增长208%
- 成都银行2021上半年净利33.89亿元 期内实现营收同比增长17.27亿元
- 汽车之家发布2021年第二季度业绩 期内新能源汽车品牌收入增长238%
- 中信银行上半年实现净利润290.31亿元 期末不良贷款余额706.82亿元
- 光伏概念掀起涨停潮交易价格创新高 全天成交额达1.29亿元
- 上半年生物药大增45% 关键财务指标好转营收账款持续下降
- 全球热推荐:甲醇概念上市公司有哪些?甲醇概念股一览?
- 全球短讯!2020年股市休市放假怎么安排的?A股全年休市一览?
- 2020新能源电池概念股票有哪些?2020新能源电池概念股票一览?
- 全球实时:哪些是智能家居概念股?智能家居概念股名单一览?
- 全球消息!抄底是什么意思?抄底的四大形态是怎样的?
- 【热闻】磷化工股票有哪些?相关磷化工概念股票有哪些?
- 【世界新要闻】面板概念龙头股有哪些?2021年面板概念股有哪些?
- 碳中和是什么概念?碳中和概念股有哪些?
- 每日消息!太阳能电池背板上市公司有哪些?太阳能电池背板概念股一览
- 全球滚动:虚拟现实板块股票有哪些?虚拟现实概念股票一览?
- 全球动态:橡胶股票龙头股有哪些?橡胶股票有哪些?
- 世界快看:俄油上限刚出台冲击就已显现?俄罗斯原油出口出现急剧减少
- 电缆上市公司有哪些?相关上市公司龙头有哪些?
- 世界快看:核电板块龙头股票有哪些?核电概念股票有哪些?
- 世界微资讯!食用油板块龙头股票有哪些?食用油板块龙头股票有哪些?
- 环球视讯!2021年腾讯概念股票有哪些?腾讯概念股一览?
- 森马服饰股票属于什么板块?森马服饰股票属于哪些概念股?
- MINE's TALK对话祝羽捷,「一个自己的房间」 传递自洽生活哲学
- 世界今头条!国际油价多头须尽快离场,该指标暗示需求担忧仍唱主角
- 中交路桥建设20亿元绿色公司债券已提交注册
- 世界热推荐:中建信息10亿元应收账款资产支持ABS已获受理
- 产业物流线上季快讯 | 王少华:险资在物流上的投资机会将增多
- 绿城房地产拟发行90亿元中票 项目状态为“预评中”
- 上海地铁全线受理云闪付乘车码“一码通行”功能
- 焦点快播:粤万年青:公司产品消炎利胆片功能主治为“清热,祛湿,利胆
- 精彩看点:味知香:公司新产能预计前期先进行部分投产,后期根据生产运营情况,逐步释放产能
- 香港发展局:一般项目由“生地”变成可建屋“熟地”的时间减至4年
- 环球百事通!锡装股份:公司没有上述高送转的计划。感谢您的关心支持!
- 焦点短讯!金价有望继续走强!世界黄金协会称全球央行继续购金,三季度购买量猛增至400吨
- 加码欧洲储能市场 优能新能源发布新一代储能逆变器
- 今热点:Expedia:国际旅行和商旅有望在2023年恢复元气
- 世界热点!美原油交易策略:经济衰退担忧笼罩市场,油价跌势难改
- 头条焦点:国际金价持稳,市场担心美联储继续维持强硬鹰派立场
- 当前速看:现货黄金交易策略:初请数据来袭,关注200日均线阻力
- 携程发布“2023旅游振兴A计划”,三“重”战略促万亿消费
- 天天即时看!冬季冰雪游升温,同程旅行冰雪搜索热度增长150%
- 全球要闻:国际金价或回踩1772美元
- 环球即时:ThinkBook16p对比联想小新 Pro16 2021款哪个值得更好?详细评测
- 焦点热文:北京楼市,变了
- 场景化营销精准发力 钱小乐持续优化金融服务质效
- 环球热头条丨Excel函数之VLOOKUP()怎么使用?一文搞懂Excel函数之VLOOKUP()使用
- “新十条”发布后,这个省份开始抢游客了
- 全球最新:魏小安:旅游业大局三个月可定,六个月可起
- 环球百事通!FFT是什么意思?FFT的详解
- 天天微头条丨disable怎么运用?disable简单易理解用法
- 环球快报:格式化时间是什么?抽象类DateFormat是什么?
- 焦点!中骏集团:前11月合同销售额约544.42亿元
- 全球即时:order by是什么意思?order by的详解
- 天天热消息:java.lang.NullPointerException解决方案是什么?
- 焦点消息!诛仙3新手卡怎么领取?诛仙3新手卡领取中心
- 弘阳地产前11月合约销售额同比减少56.98% 单月同比跌64.3%
- 天天要闻:主板测试卡代码a2是什么?主板测试卡代码 常见代码总结
- UML建模怎么用?UML建模之用例图
- 环球百事通!国产搞笑电视剧排行榜你看过几个?爱情公寓只能排倒数第三
- 【世界快播报】工厂模式是什么?工厂模式的详解
- 世界通讯!黄淮学院最低录取分数线是多少?2022文理科最低分及位次
- 最美夕阳红 携手度余生——富德生命人寿十堰中支用镜头为老人定格相濡以沫的爱情
- 速讯:使用Icon图标的几种方式是啥?Icon图标怎么使用?
- 速看:歌名最长的网络歌曲是什么?歌名最长的中文歌
- fm2015是什么?fm2010战术
- 【独家】.NET Core是什么?NET Core有哪些用处?
- Trans系列是啥?基于翻译模型(Trans系列)的知识表示学习
- 尼康d800与d810哪个好?尼康d800与d810有哪些区别?
- 快看点丨Internal问题解决流程 Internal server error 500 问题解决思路
- 【环球播资讯】12月8日天元股份涨停分析:可降解塑料,包装印刷概念热股
- 每日快播:12月8日焦点科技涨停分析:跨境电商,职业教育,教育概念热股
- 12月8日千红制药涨停分析:肝素,化学原料药,抗原自测概念热股
- 微速讯:转动惯量是什么意思?转动惯量的含义
- 当前焦点!歉疚的意思是什么?歉疚一词详情介绍
- 西米是什么米?西米露和西米是一样的吗?
- 兴民智通:公司目前不触及 st 相关条款
- 世界顶级昂贵音响有哪些?世界顶级昂贵音响介绍
- 世界今日报丨如何正确使用系统清理bat程序?清理bat程序的方法技巧
- 天天微动态丨11月百城二手住宅市场均价稳中趋降
- 【世界热闻】12月8日国光连锁涨停分析:新零售概念热股
- 头条焦点:文章目录是什么?选择排序怎么设置?
- 世界微资讯!网络的利与弊是什么?网络的利弊分析
- 天天快资讯丨吸血鬼狂刀技能搭配详情 吸血鬼狂刀攻略)
- 世界动态:磁条读写器多少钱?磁条读写器使用方法介绍
- Modbus通信协议是什么?Modbus通信协议详解
- JSONObject是什么意思?JSONObject的详情介绍
- 世界关注:iPad Air(iPad5)什么时候上市?iPad Air(iPad5)的上市时间
- 安徽大专学校推荐!安徽大专院校排名前十详细介绍含分数线
- 每日热闻!BOW是什么意思?为什么要用BOW模型描述图像?
- 环球快资讯:铅球世界纪录2019 女子男子铅球世界纪录分别是多少?
- 热门看点:分析宾得645d怎么样?宾得公司详情介绍
- 观察:梯度(gradient)是什么?梯度的概念是建立在哪方面?
- 焦点播报:程子土包子来的时候歌厅的dj叫什么名字?海燕KTV
- 世界视讯!信号的基本概念是什么?信号的分类有哪些?
- 环球实时:电脑电源额定功率要多少才合适?电脑电源的额定功率
- 全球快消息!4399生死狙击万人号账号2021 4399生死狙击好号和密码免费永久2021
- 焦点讯息:OneNote是什么?OneNote的功能有哪些?
- 世界今头条!多普达手机都有哪些型号?多普达最新手机大全详情
- 挥着翅膀的女孩英文版叫什么?挥着翅膀的女孩英语版歌词翻译
- lol怎么在游戏里回复好友?lol游戏回复技巧
- 今日精选:碧海青天的意思是什么?碧海青天一词出自哪里?
- 世界信息:图片或手写签名转电子签名怎么转?手写签名转电子签名教程
- 世界要闻:44岁贾静雯出席活动耳朵被烫伤 修杰楷很是心疼
- 当前视点!手机QQ接收电脑端好友发送的文件存储在什么地方?手机文件储存路径
- 天天速读:语义分割:基于openCV和深度学习(二)