草庐IT

Instantiation

全部标签

java - 为什么要将对象分配给接口(interface)?

我多次听说在实例化对象时你应该这样做:“接口(interface)”名称=新的“类”();例如,对于实现List的类链表:Listname=newLinkedList();LinkedList实现了很多接口(interface),包括queue、deque等,上面的代码和有什么区别LinkedListname=newLinkedList();或Queuename=newLinkedList();为什么类型也必须指定两次;这似乎是多余的,但oracledocs似乎没有提到它。 最佳答案 LinkedListname=newLinked

java - JUnit TestCase 对象实例化

TestCase对象的新(或不同)实例是否用于运行JUnit测试用例中的每个测试方法?或者一个实例被重复用于所有测试?publicclassMyTestextendsTestCase{publicvoidtestSomething(){...}publicvoidtestSomethingElse(){...}}在运行此测试时,创建了多少个MyTest类实例?如果可能,请提供文档或源代码的链接,我可以在其中验证行为。 最佳答案 是的,创建了一个单独的实例。在运行该测试时,会创建2个MyTest实例。如果您想要不同的行为,一种选择是使

java - Java Boolean 包装器类是如何实例化的?

在java中,我可以这样写代码Booleanb=true;它会起作用的。我现在有一个包含值“true”的对象。这是如何运作的?为什么我不必通过构造函数传递值?像这样:Booleanb=newBoolean(true);此外,我能否创建可以以类似方式实例化的自定义类?如果有,那叫什么?这样我就可以做这样的事情:Foobarfoobar="Test";因此有了我自己的包装器类。谢谢 最佳答案 不,你不能做后者。前者称为autoboxing并在Javav1.5中引入以自动包装,原始包装器中的原语。使用泛型和/或集合时,可以清楚地看到自动装

java - 实例和迭代。哪一个更好?

我想阅读文档并处理它们。每次迭代处理一个文档。哪种代码比较好?1.BufferedReaderbr;for(Filef:files){br=newBufferedReader(......);......}2.for(Filef:files){BufferedReaderbr=newBufferedReader(......);......}我的观点是哪一个在空间和速度方面更有效率? 最佳答案 在我看来,后者更为清晰。通常,更喜欢声明具有最小作用域的局部变量,理想情况下在声明时初始化它们。它不会直接影响性能-但会影响可读性和维护性,

c++ - 打印实例链

我正在使用STLC++0x容器调试一些C++解析器(工具链是GCC4.7.0)。而且由于STL重新绑定(bind)代码很难理解,我需要以某种方式打印typedef的完整实例化链,如std::vector::reference.当然,它只解析为T&,但在它通过__gnu_cxx中的至少7个不同模板之前和其他内部结构。因此,我期待在模板错误的情况下打印出类似的内容,但对于编译器实例化的每个类。可能吗?GCC插件,也许...UPD:好吧,我已经手动实例化了所有必需的模板。似乎没有什么好的方法可以自动执行此操作,除了将一些调试printf语句插入GCC代码本身。 最

c++ - 检查类模板是否已实例化?

有没有一种简单的方法可以查看某个类是否已在翻译单元中实例化?C++Primer中的练习询问每个标记语句,是否发生实例化:templateclassStack{};voidf1(Stack);//(a)classExercise{Stack&rsd;//(b)Stacksi;//(c)};intmain(){Stack*sc;//(d)f1(*sc);//(e)intiObj=sizeof(Stack);//(f)}我不确定如何实际检查我的答案。我想也许我可以为每个类类型使用显式实例化(例如externtemplateclassStack),然后在程序中永远不会有相应的显式实例化定义。这

c++ - C++11标准中实例化单元的含义是什么?

C++11§2.2翻译阶段,第8个短语。翻译后的翻译单元和实例化单元组合如下。“实例化单元”的确切含义是什么? 最佳答案 实例化单元是模板实例化(隐式和显式)。例如,对于这个模板:templatestructA{};这个:templateclassA;加上上面的模板声明和定义,就是一个实例化单元。 关于c++-C++11标准中实例化单元的含义是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

c++ - Xcode C++ vector : Implicit instantiation of undefined template

我在不同的IDE上运行这段代码,它成功了。出于某种原因,我在Xcode上收到上述错误消息。我假设我缺少某种标题,但我不确定是哪一个。#include#include#include#includeintmain(){vectorlistRestaurants;//error:Implicitinstantiationofundefinedtemplatereturn0;} 最佳答案 Xcode10.2.1向我展示了错误Implicitinstantiationofundefinedtemplate'std::__1::vector,

c++ - 模板隐式实例化和内联成员

我想知道什么时候调用模板类的成员函数。在哪里生成定义?例如:templateclassA{public:A(){cout::A()"::f()"ob;//Timet1ob.f();//Timet2}所以我想知道模板类A是做什么的看起来像point1&point2案例1:时间t1:classA{public:A(){cout::A()"::fyetsothereisjustadeclaration};时间t1classA{public:A(){cout::A()"::f()"案例1:时间t1classA{public:A();voidf();};A::A(){cout::A()"时间t2

c++ - 创建一个新对象并传入方法参数

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。Improvethisquestion在Java中,我们可以创建一个新对象并将其传递给其参数内的方法,如下所示:wrapper.set_state(newMedium());在C++中与此等效的是什么?我想我可以先创建对象然后传递它,但能够在参数中创建它似乎更整洁。