C++中一个文件的static变量可否被其他文件引用

shezhang999 2007-08-21 09:47:50
现在有文件a.h和a.cpp,a.h中定义了class cls,cls中有一静态变量static bool flag;(公有变量)

另有文件b.h和b.cpp, b.h中包含了a.h;

现在我想在b.cpp中使用flag变量,请问可以吗,可以的话应该在b.h/b.cpp中如何声明

希望各位不吝赐教
...全文
5447 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
yixuan178 2010-09-27
  • 打赏
  • 举报
回复
lz, 我这边在2005上可以通过了。
一个是在a.cpp上初始化的时候要加类名前缀 比如 const bool a::flag=false;
然后b.cpp里面就可以使用这个a::flag了。
METEOR_T 2010-04-21
  • 打赏
  • 举报
回复
大家说得都有道理。还是用动手来证明吧。
rocksky520 2007-08-23
  • 打赏
  • 举报
回复
这里的static也是类的一个成员,干嘛要在别的文件里面使用前声明呢?你见过要使用某个对象的public 成员前还要事先声明的么? static 只是保证了所有这个类的对象都共享这个内存,而这块内存是属于类的,而不是具体的某个对象所有,所以别的文件使用前不用声明。在MFC中不也有很多类的成员是static的,只要包含了定义文件,就可以直接拿来用就是了
lgdgyd2 2007-08-23
  • 打赏
  • 举报
回复
1、声明为static的局部实体在声明它的文件之外不可见(中文4版P605)
2、static局部对象确保不迟于在程序执行流程第一次经过该对象的定义语句时进行初始化。这种对象一旦被创建,在程序结束前都不会被撤消(中文4版P220)
gfxiang 2007-08-23
  • 打赏
  • 举报
回复
看书才是正道,C++ Primer翻到最后索引,找static
hflyingheart 2007-08-22
  • 打赏
  • 举报
回复
例如:
//a.h
#ifndef _A_H
#define _A_H

#include <iostream>
using namespace std;

static int pp=5; //(b)
class cls
{
public:
static int flag;
void print() const;
};
#endif //_A_H
//--end of a.h
----

//a.cpp

#include "a.h"
int cls::flag=100;
//static int pp=2; //(a)
//pp=2;//(b-1) error C2501: 'pp' : missing storage-class or type specifiers
//(b-1) error C2374: 'pp' : redefinition; multiple initialization
void cls::print() const
{
pp=2;//(b-2)
cout<<"in print(),cls::flag="<<flag<<endl;
cout<<"in a.cpp, use cls::print() to output pp="<<pp<<endl;//(b)
}
// end of a.cpp
-------

//test.cpp

#include "a.h"
void fun_a()
{
static int x=0;
int y=0;
x++;
y++;
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
}
//extern int pp; //(a) test1.obj : error LNK2001: unresolved external symbol "int pp" (?pp@@3HA)
// Debug/test1.exe :fatal error LNK1120: 1 unresolved externals
void main()
{
cls t;
fun_a();
t.print();
cout<<"cls::flag="<<cls::flag<<endl;

fun_a();
// pp=7; (c)
cout<<"in main(), pp="<<pp<<endl;
}
//end of test.cpp

输出结果为:
x=1
y=1
in print(),cls::flag=100
in a.cpp, use cls::print() to output pp=2
cls::flag=100
x=2
y=1
in main(), pp=5

rocksky520 2007-08-22
  • 打赏
  • 举报
回复
static变量必须定义单独空间内,编译器是不会为之分配内存的。声明在class里的static variable must be defined outside the class(no inlining is allowed).

so my a.h file:

//a.h

class T{
public:
static int flag;
};
//Define storage for the static data member
int T::flag = 0;

and b.cpp file:

//b.cpp
#include <iostream>
#include "a.h"

using namespace std;

void main()
{
int d = T::flag;
cout<<"d="<<d<<endl;
}
也就是说,你无需额外声明,只要把static所在文件包含进来,就可通过类名直接访问(当然必须是public的)
hflyingheart 2007-08-22
  • 打赏
  • 举报
回复
shezhang999()

1,static变量是在局部使用的,不过我在使用时引用了其类的头文件,所以是可以的
2,我上面写的程序报错的都是没有初始化的,static const int那个之所以可以是因为静态变量只有在定义为常量时才可以在定义时初始化
3,其实我说的两个例子都可以正常使用,题目中据说的问题只要在a.cpp中加入bool flag = 1;即可;在a.h中加不可以,因为头文件不编译
4.现在我想在b.cpp中使用flag变量,请问可以吗,可以的话应该在b.h/b.cpp中如何声明

===================================================================================

1.static变量是全局使用的还是局部使用的,要看具体的情况:
1)如果是在一个函数内定义的static变量,那么它的作用域就是这个函数体内,生命期就是整个程序;
2)如果是在一个源文件(如上所述的a.cpp)里定义的static变量,那么它的作用域就是这个文件(a.cpp)内,生命期就是整个程序,在其它文件中即使用extern外部引用,也仍不可使用,编译就会报错;
3)如果是在一个头文件(如上a.h)里定义的static变量,如果在其它文件里包含了这个头文件,那么就可以使用它了,作用域为所有能使用它的文件,生存期也是同程序的生存期,如果不包含所定义它的头文件,而用extern外部引用,那么它在编译时就报错了;
2.不是因为没初始化,静态变量为非常量时一样可以在定义时就初始化;

4.可以使用,只需在b.h或b.cpp中包含a.cpp即可.

OrangePear 2007-08-22
  • 打赏
  • 举报
回复
我在vs2005下试了一下好像有同样的错误,但是在vc6.0下却没有问题,难道有什么样的设置吗?
shanhqk 2007-08-22
  • 打赏
  • 举报
回复
1、那为什么我上面说的声明成const并在声明是初始化时就没报错呢?
答:这个原因并不因为定义为static和const的原因,而是因为定义的类型是int(简单类型)如果是自定义的类型,这样初始化是不允许的。C++编译器允许在定义为static const对简单类型的变量进行初始化。
2、 l 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可改变其值。
类的静态成员变量必须在声明它的文件范围内进行初始化才能使用,private类型的也不例外。如,(申明,此中语句不是我原创,转载)
答:这两句话有矛盾,既然默认初始化为0,那又为什么必须在声明它的文件范围内进行初始化才能使用呢,其实,对于静态变量必须初始化,要不然肯定不能使用。

3、静态变量或静态函数,即只有本文件内的代码才可访问它,它的名字(变量名或函数名)在其它文件中不可见。
答:这个问题,我不赞同,因为如果该类没有子类,则这句话是正确的,因为确实如此。但如果该类有子类,则这种情况就不成立了,因为你可以在子类中访问该静态变量。前提是该静态变量是public和protected

4、在函数体内生成的静态变量它的值也只能维持

int max_so_far( int curr )//求至今(本次调用)为止最大值

{

static int biggest; //该变量保持着每次调用时的最新值,它的有效期等于整个程序的有效期

if( curr > biggest )

biggest = curr;

return biggest;

}
答:这个我赞同
5、 在C++类的成员变量被声明为static(称为静态成员变量),意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;而类的静态成员函数也只能访问静态成员(变量或函数)。
答:这个我赞同
browningblue 2007-08-22
  • 打赏
  • 举报
回复
I think you can use it cls::flag. And i test it in gcc, it compile successfully
godspeed251 2007-08-22
  • 打赏
  • 举报
回复
补充上面的问题:
我的编译器是VS2005
godspeed251 2007-08-22
  • 打赏
  • 举报
回复
各位高手,在看到你们以上解释后,我有以下问题仍然迷茫:
1〉
如果在一个基类中定义一个或几个静态成员变量,
在他的子类中能不能用?
如果可以怎么用?


对于我的以上问题,我的测试是,在有的子类里可以,
但作为同一工程内的其他子类却说为定义,
这是我最近的上机考试题。。。

2〉
另一个是上一个问题的延伸:
在main.cpp中包含了所有积累和子类的.h
但编译时却说我的那些类对象未定义
而在代码定义窗口中却可以显示类的定义位置。。。

请各位能不吝赐教!
C++新手
gfxiang 2007-08-22
  • 打赏
  • 举报
回复
ls是对的
zsyddl2 2007-08-22
  • 打赏
  • 举报
回复
请看static 的正解:
static
l 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可改变其值。

l 静态变量或静态函数,即只有本文件内的代码才可访问它,它的名字(变量名或函数名)在其它文件中不可见。

l 在函数体内生成的静态变量它的值也只能维持

int max_so_far( int curr )//求至今(本次调用)为止最大值

{

static int biggest; //该变量保持着每次调用时的最新值,它的有效期等于整个程序的有效期

if( curr > biggest )

biggest = curr;

return biggest;

}

l 在C++类的成员变量被声明为static(称为静态成员变量),意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;而类的静态成员函数也只能访问静态成员(变量或函数)。

l 类的静态成员变量必须在声明它的文件范围内进行初始化才能使用,private类型的也不例外。如,
(申明,此中语句不是我原创,转载)
KenYuan2016 2007-08-22
  • 打赏
  • 举报
回复
1,static变量是在局部使用的,不过我在使用时引用了其类的头文件,所以是可以的

你真的懂了static的作用域的含义了吗?

2,我上面写的程序报错的都是没有初始化的,static const int那个之所以可以是因为静态变量只有在定义为常量时才可以在定义时初始化
你真的懂了static const int了吗?

3,其实我说的两个例子都可以正常使用,题目中据说的问题只要在a.cpp中加入bool flag = 1;即可;在a.h中加不可以,因为头文件不编译

你真的懂了为什么flag可以被访问吗?


我为你感到迷芒
shezhang999 2007-08-22
  • 打赏
  • 举报
回复
回楼上的几位,这个问题我弄明白了,我来说一下吧。
1,static变量是在局部使用的,不过我在使用时引用了其类的头文件,所以是可以的
2,我上面写的程序报错的都是没有初始化的,static const int那个之所以可以是因为静态变量只有在定义为常量时才可以在定义时初始化
3,其实我说的两个例子都可以正常使用,题目中据说的问题只要在a.cpp中加入bool flag = 1;即可;在a.h中加不可以,因为头文件不编译
琅琊榜 2007-08-22
  • 打赏
  • 举报
回复
static 是文件作用域,使用这个声明的变量只能在本文件内可见
dai_weitao 2007-08-22
  • 打赏
  • 举报
回复
static变量只存在于一个目标文件, 也就是.o或.obj文件中.
你这种在.h文件中声明, 其他.cpp文件包含的做法, 实际上是在多个目标文件中声明多个同名的static变量, 这实际上是多个变量, 所以不能实现你想要的做法.

如果想要多处引用, 需要去掉static, 声明为全局变量.
KenYuan2016 2007-08-21
  • 打赏
  • 举报
回复
不能直接使用,你在b中要通过a的对象去访问
在B中用 cls _cls;
用 _cls.flg 访问
加载更多回复(16)
java面试试题 全面 准确 带答案 coreJava部分 8 1、面向对象的特征有哪些方面? 8 2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8 7、Java 有没有goto? 8 8、int 和Integer 有什么区别? 9 9、&和&&的区别? 9 10、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别? 9 11、heap 和stack 有什么区别? 9 12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 9 13、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 9 14、编程题: 用最有效率的方法算出2 乘以8 等於几? 9 15、有没有length()这个方法? String 有没有length()这个方法? 9 16、在JAVA ,如何跳出当前的多重嵌套循环? 9 17、构造器Constructor 是否可被override? 9 18、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 9 19、是否可以继承String 类? 9 20、以下二条语句返回值为true 的有: 10 21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10 22、我们在web 应用开发过程经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 10 23、String 和StringBuffer 的区别? 10 24、String, StringBuffer StringBuilder 的区别。 10 25、Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 10 27、描述一下JVM 加载class 文件的原理机制? 10 28、char 型变量能不能存贮一个文汉字?为什么? 10 29、abstract class 和interface 有什么区别? 10 30、Static Nested Class 和Inner Class 的不同? 11 31、java 会存在内存泄漏吗,请简单描述。 11 32、abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized? 11 33、静态变量和实例变量的区别? 11 34、是否可以从一个static 方法内部发出对非static 方法的调用? 11 35、写clone()方法时,通常都有一行代码,是什么? 11 36、GC 是什么? 为什么要有GC? 11 37、垃圾回收的优点和原理。并考虑2 种回收机制。 11 38、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 12 39、String s=new String(“xyz”);创建了几个String Object? 12 40、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 12 41、Java 的接口和C++的虚类的相同和不同处。 12 42、一个“.java”源文件是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以implements(实现)interface(接口)? 12 45、内部类可以引用他包含类的成员吗?有没有什么限制? 12 46、java 实现多态的机制是什么? 12 47、在java 一个类被声明为final 类型,表示了什么意思? 12 48、下面哪些类可以被继承? 12 49、指出下面程序的运行结果: 【基础】 13 52、关于内部类: 13 53、数据类型之间的转换: 14 54、字符串操作:如何实现字符串的反转及替换? 14 55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和javasciprt 的区别。 15 61、什么时候用assert? 16 62、error和exception有什么区别 16 63、ArrayList和Vector的区别 16 64、Collection 和 Collections的区别 17 65、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别 17 66、HashMap和Hashtable的区别 17 67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的基本类 17 70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个线程是用run()还是start()? 17 72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73、线程的基本概念、线程的基本状态以及状态之间的关系 18 74、sleep() 和 wait() 有什么区别? 18 75、socket通信(tcp/udp区别及JAVA的实现方式) 18 76、什么是java序列化,如何实现java序列化? 18 77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class Something { void doSomething () { private String s = ""; int l = s.length(); } }有错吗? 18 80、abstract class Something { private abstract String doSomething ();}这好像没什么错吧? 18 81、public class Something { public int addOne(final int x) { return ++x; }}这个比较明显。 19 83、class Something { int i; public void doSomething() { System.out.println("i = " + i); }} 有什么错呢? 19 Hibernate部分 19 92、一般情况下,关系数据模型与对象模型之间有哪些匹配关系(A,B,C) 21 93、以下关于SessionFactory的说法哪些正确?(B,C) 21 94、元素有一个cascade属性,如果希望Hibernate级联保存集合的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、Hibernate是如何延迟加载? 22 98、Hibernate怎样实现类之间的关系?(如:一对多、多对多的关系) 22 99、说下Hibernate的缓存机制 22 100、Hibernate的查询方式 23 101、如何优化Hibernate? 23 102、Struts工作机制?为什么要使用Struts? 23 103、Struts的validate框架是如何验证的? 24 104、说下Struts的设计模式 24 105、spring工作机制及为什么要用? 24 106、HttpSession session = request.getSession() 24 107、getParameter与 getAttribute的区别? 24 108、以下哪一个不是赋值符号? 25 109、以下哪个不是Collection的子接口? 25 110、.BufferedReader的父类是以下哪个? 25 112、div与span区别? 25 113、html的框架是什么? 25 114、alert怎样换行? 25 115、什么情况用HTML控件,什么情况用WEB控件,并比较两者差别 25 javaScript部分 25 116、JavaScript的对象. 25 117、function的用法 26 118、对象的继承 27 119、this的用法 29 120、Array in JavaScript 29 121、jsp有哪些内置对象?作用分别是什么? 31 122、jsp有哪些动作?作用分别是什么? 31 123、JSP动态INCLUDE与静态INCLUDE的区别? 31 124、两种跳转方式分别是什么?有什么区别? 31 125、如何执行一个线程安全的JSP? 31 126、JSP如何处理HTML FORM的数据? 31 127、在JSP如何包含一个静态文件? 32 128、在JSP如何使用注释? 32 129、在JSP如何执行浏览重定向? 32 130、如何防止在JSP或SERVLET的输出不被BROWSER保存在CACHE? 32 131、在JSP如何设置COOKIE? 32 132、在JSP如何删除一个COOKIE? 32 133、在一个JSP的请求处理如何停止JSP的执行 33 134、在JSP如何定义方法 33 135、在JSP能发送EMAIL吗 34 136、在SERVLET我能调用一个JSP错误页吗 34 137、APPLET和JSP如何通讯 35 138、JSP如何与EJB SessionBean通讯 35 139、当我使用一个结果集时,如何防止字段为"null"的字域显示在我的HTML输入文本域? 35 140、如何SERVLET或JSP下载一个文件(如:binary,text,executable)? 36 141、使用useBean标志初始化BEAN时如何接受初始化参数 36 142、使用JSP如何获得客户浏览器的信息? 36 143、能象调用子程序一样调用JSP吗? 36 144、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS? 36 145、<%@include file="abc.jsp"%>与之间的差别? 36 146、JSP的缺点? 36 148、如何实现JSP的国际化? 36 150、如何在JSP包括绝对路径文件? 使用URLConnection即可。 37 151、在servlets和JSP之间能共享session对象吗? 37 152、如何设置cookie在某一时间后过期? 37 153、如何获得当前的sessions数? 37 154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37 155、对一个JSP页,如果多个客户端同时请求它,同步可能吗? 37 156、在jsp:useBean语法使用beanName有何好处? 37 157、当我使用时,在浏览器的地址栏没有改变? 37 158、如何转换JSP 0.9版本的文件到JSP1.1? 37 160、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 38 161、AJAX的全称是什么? 介绍一下AJAX 38 162、Ajax主要包含了哪些技术? 38 163、主要的Ajax框架都有什么? 38 164、介绍一下XMLHttpRequest对象 38 165、AJAX应用和传统Web应用有什么不同? 38 166、如何用JQuery进行表单验证? 39 167、Prototype如何实现页面局部定时刷新? 40 168、Prototype如何为一个Ajax添加一个参数? 40 169、Ajax请求总共有多少种Callback? 41 170、Javascript如何发送一个Ajax请求? 41 171、AJAX都有哪些有点和缺点? 41 172、Ajax和javascript的区别? 41 Servlet部分 42 174、JAVA SERVLET APIforward() 与redirect()的区别? 42 178、如何现实servlet的单线程模式 42 179、页面间对象传递的方法 42 180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话跟踪技术 42 182、Request对象的主要方法 43 183、我们在web应用开发过程经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 43 184、Servlet执行时一般实现哪几个方法? 44 185、getServletContext()和getServletConfig()的意思 44 186、Hashtable和HashMap 44 187、JAVA SERVLET APIforward() 与redirect()的区别? 44 189、Can a Java Thread be started from Servlet class, and what will be the implications? 45 190、What is HTTP Session tracking and why is it important? 45 191、What is session management, and how is it different from session tracking? 45 192、Can I use Hidden form field to track session? 45 194、In a architecture pattern like MVC, it is mandatory that Servlet should be the controller, why not JSP? 46 195、Why JSP is used as View part of MVC ? 46 196、Can a database connection pool be instantiated in init method of servlet instead of server connection pool? What will be the problem? 46 综合部分 46 197、Class.forName的作用?为什么要用? 47 198、Jdo是什么? 47 199、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 47 200、xml有哪些解析技术?区别是什么? 48 201、你在项目用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时如何解决文问题?如何解析? 48 203、编程用JAVA解析XML的方式. 49 204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 51 205、EJB与JAVA BEAN的区别? 51 206、EJB的基本架构 51 207、MVC的各个部分都有那些技术来实现?如何实现? 52 208、J2EE是什么? 52 209、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 52 210、STRUTS的应用(如STRUTS架构) 52 211、开发都用到了那些设计模式?用在什么场合? 52 212、UML方面 52 213、如何校验数字型? 53 214、CORBA是什么?用途是什么? 53 215、写一个方法,实现字符串的反转,如:输入abc,输出cba 53 216、数据类型之间的转换 53 217、如何取得年月日,小时分秒 53 218、如何取得从1970年到现在的毫秒数 53 219、如何格式化日期 53 220、文件和目录(I/O)操作 54 230、J2EE的优越性 54 231、Java语言的11个关键特性. 54 232、说出Servlet的生命周期,并说出Servlet和CGI的区别。 55 233、说出在JSP页面里是怎么分页的? 55 234、存储过程和函数的区别 55 235、事务是什么? 55 236、游标的作用?如何知道游标已经到了最后? 55 237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、激活机制 56 243、remote接口和home接口主要作用 56 244、客服端调用EJB对象的几个基本步骤 56 245、 如何给weblogic指定大小的内存? 56 246、如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 57 247、如何启动时不需输入用户名与密码? 57 248、在weblogic管理制台一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件? 57 250、如何查看在weblogic已经发布的EJB? 57 251、如何在weblogic进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置 57 252、在weblogic发布ejb需涉及到哪些配置文件 57 253、EJB需直接实现它的业务接口或Home接口吗,请简述理由. 57 254、说说在weblogic开发消息Bean时的persistent与non-persisten的差别 57 255、说说你所熟悉或听说过的j2ee的几种常用模式?及对设计模式的一些看法 57 256、现在输入n个数字,以逗号,分开; 58 257、金额转换,阿拉伯数字的金额转换成国传统的形式如:(¥1011)->(一千零一拾一元整)输出。 58 259、Spring和Struts的区别? 58 260、如何用Struts实现国际化? 58 261、如何实现struts的validator框架? 59 262、如何在struts配置数据源在,什么文件?用什么标签?如何取出DataSource? 60 263、Struts框架如何取得消息资源文件的信息? 60 264、Struts如何基于validation.xml来启用客户端验证? 60 266、请你谈谈SSH整合 60 267、ActionForm bean的作用 61 268、Spring如何创建一个数据连接池 61 269、Spring如何配置一个bean来从JNDI得到DataSource 61 270、Bean的销毁 61 271、Spring如何获取Bean 61 272、Spring和Struts的区别? 62 273、什么是aop,aop的作用是什么? 62 275、依赖注入的方式有几种,各是什么? 62 276、spring的核心类有那些,各有什么作用? 62 277、ApplicationContext的作用 63 278、如何实现资源管理 63 279、如何实现加入web框架 63 280、如何实现事件处理 63 281、spring的ioc及di代表什么意思? 63 283、spring的配置的主要标签是什么?有什么作用? 64 284、spring与ejb2.0的事务管理比较的优缺点? 64 286、在spring有几种事务管理,分别是什么? 64 287、在spring如何配代码的事务管理? 65 288、在spring如何配容器的事务管理,相关的类有那些? 65 289、如果spring与hibernate结合在一起可以不需要hibernate.cfg.xml文件是否正确? 65 290、spring+hibernate的配置文件的主要类有那些?如何配置? 65 291、spring+hibernate的代码实现,对于实现类一定继承于一个类是那一个,它有什么作用 66 292、如何配置spring+struts? 66 293、如何在web环境配置applicationContext.xml文件? 66 294、BS与CS的联系与区别 66 295、Servlet的生命周期 68 296、如何现实Servlet的单线程模式 68 297、Servlet执行时一般实现哪几个方法? 68 298、j2ee常用的设计模式?说明工厂模式。 68 299、应用服务器与WEB SERVER的区别? 68 300、应用服务器有那些? 68 301、说出数据连接池的工作机制是什么? 68 302、页面间对象传递的方法 69 303、四种会话跟踪技术 69 304、J2EE 是技术还是平台还是框架? 69 305、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 69 306、启动一个线程是用run()还是start()? 69 307、线程的基本概念、线程的基本状态以及状态之间的关系 69 308、java 有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 70 309、JSP动态INCLUDE与静态INCLUDE的区别? 70 310、JSP的常用指令 70 311、什么情况下调用doGet()和doPost()? 70 312、JSP和Servlet 有哪些相同点和不同点,他们之间的联系是什么? 70 313、Request对象的主要方法: 70 314、JSP有哪些动作?作用分别是什么? 71 315、JSP的两种跳转方式分别是什么?有什么区别? 71 316、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 71 317、EJB与JAVA BEAN的区别? 72 318、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? 72 319、EJB规范规定EJB禁止的****作有哪些? 72 320、remote接口和home接口主要作用 72 321、bean 实例的生命周期 72 322、EJB的激活机制 73 323、EJB的几种类型 73 324、客服端调用EJB对象的几个基本步骤 73 325、EJB需直接实现它的业务接口或Home接口吗,请简述理由。 73 327、说说在weblogic开发消息Bean时的persistent与non-persisten的差别 73 328、你在项目用到了xml技术的哪些方面?如何实现的? 73 329、JAVA SERVLET APIforward() 与redirect()的区别? 73 330、面向对象的特征? 73 331、Java的异常处理机制? 74 333、Java的事件处理机制? 74 334、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 75 335、GC是什么?为什么要有GC (基础) ? 75 336、请说出你所知道的线程同步的方法。 75 337、什么是Java序列化,如何实现Java 序列化? 75 338、介绍Java的Collection Framework(包括如何写自己的数据结构)? 75 339、String是最基本的数据类型吗? 76 340、谈谈final, finally, finalize 的区别? 76 341、Static Nested Class 和Inner Class的不同? 76 342、HashMap和Hashtable的区别? 76 343、ArrayList和Vector的区别? 76 344、Collection 和Collections的区别? 77 345、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 77 346、String与StringBuffer的区别? 77 347、静态变量和实例变量的区别? 77 348、List、Map、Set三个接口,存取元素时,各有什么特点? 77 349、说出ArrayList,Vector, LinkedList的存储性能和特性。 77 350、在Java一个类被声明为final类型,表示了什么意思? 77 351、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 77 352、String s = new String("xyz");创建了几个String Object? 77 353、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 77 354、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 78 355、数组有没有length()这个方法? String 有没有length()这个方法? 78 356、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 78 357、List, Set, Map是否继承自Collection接口? 78 358、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 78 360、构造器Constructor是否可被override? 78 361、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 78 362、try {}里有一个return 语句,那么紧跟在这个try后的finally {}里的code 会不会被执行,什么时候被执行,在return前还是后? 78 363、描述一下JVM加载class文件的原理机制? 78 364、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 78 365、Java会存在内存泄漏吗,请简单描述。 78 366、是否可以从一个static方法内部发出对非static方法的调用? 79 367、写clone()方法时,通常都有一行代码,是什么? 79 368、在Java,如何跳出当前的多重嵌套循环? 79 370、给我一个你最常见到的runtime exception。 79 371、写一个Singleton出来 79 372、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示? 80 373、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在 COLLECTION框架,实现比较要实现什么样的接口? 81 374、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 82 380、ArrayList和Vector的区别, HashMap和Hashtable的区别 83 381、== 与 equals 的区别: 83 382、写一个 SQL Server 的存储过程: 83 383、写一个 Oracle 的存储过程: 84 384、HTTP 的请求过程: 84 385、多线程的优点 84 387、java是否存在内存泄露 85 388、Corba概述 85 389、toString方法的概述 85 390、Object类的概述 85 391、什么叫抽象类?抽象类跟接口有什么区别?为什么引进数据接口概念? 85 392、doGet与doPut的区别? 85 393、多线程实现有那几种方法,同步有哪几种方法? 85 394、JSP页面的跳转? 86 395、类变量的初始化 86 396、数组的定义 86 397、说明List和Set的区别 86
previous up contents next C 语言常见问题集 原著:Steve Summit 翻译:朱群英, 孙 云 修订版 0.9.4, 2005年6月23日 版权所有 © 2005 * 目录 * 1. 前言 * 2. 声明和初始化 o 2.1 我如何决定使用那种整数类型? o 2.2 64 位机上的 64 位类型是什么样的? o 2.3 怎样定义和声明全局变量和函数最好? o 2.4 extern 在函数声明是什么意思? o 2.5 关键字 auto 到底有什么用途? o 2.6 我似乎不能成功定义一个链表。我试过 typedef struct { char *item; NODEPTR next; } *NODEPTR; 但是编译器报了错误信息。难道在C语言一个结构不能包含指向自己的指针吗? o 2.7 怎样建立和理解非常复杂的声明?例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了。 o 2.9 main() 的正确定义是什么? void main() 正确吗? o 2.10 对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为 ``零", 它可否作为空指针或浮点零? o 2.11 代码 int f() { char a[] = "Hello, world!";} 不能编译。 o 2.12 这样的初始化有什么问题?char *p = malloc(10); 编译器提示 ``非法初始式" 云云。 o 2.13 以下的初始化有什么区别?char a[] = "string literal"; char *p = "string literal"; 当我向 p[i] 赋值的时候, 我的程序崩溃了。 o 2.14 我总算弄清除函数指针的声明方法了, 但怎样才能初始化呢? * 3. 结构、联合和枚举 o 3.1 声明 struct x1 { ...}; 和 typedef struct { ...} x2; 有什么不同? o 3.2 为什么 struct x { ...}; x thestruct; 不对? o 3.3 一个结构可以包含指向自己的指针吗? o 3.4 在 C 语言实现抽象数据类型什么方法最好? o 3.5 在 C 是否有模拟继承等面向对象程序设计特性的好方法? o 3.6 我遇到这样声明结构的代码: struct name { int namelen; char namestr[1];}; 然后又使用一些内存分配技巧使 namestr 数组用起来好像有多个元素。这样合法和可移植吗? o 3.7 是否有自动比较结构的方法? o 3.8 如何向接受结构参数的函数传入常数值? o 3.9 怎样从/向数据文件读/写结构? o 3.10 我的编译器在结构留下了空洞, 这导致空间浪费而且无法与外部数据文件进行 "二进制" 读写。能否关掉填充, 或者控制结构域的对齐方式? o 3.11 为什么 sizeof 返回的值大于结构的期望值, 是不是尾部有填充? o 3.12 如何确定域在结构的字节偏移? o 3.13 怎样在运行时用名字访问结构的域? o 3.14 程序运行正确, 但退出时却 ``core dump''了,怎么回事? o 3.15 可以初始化一个联合吗? o 3.16 枚举和一组预处理的 #define 有什么不同? o 3.17 有什么容易的显示枚举值符号的方法? * 4. 表达式 o 4.1 为什么这样的代码: a[i] = i++; 不能工作? o 4.2 使用我的编译器,下面的代码 int i=7; printf("%d\n", i++ * i++); 返回 49?不管按什么顺序计算, 难道不该打印出56吗? o 4.3 对于代码 in

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧