可以说我有:
class Base {/*...*/}
class Derived1: public Base {/*...*/}
class Derived2: public Base {/*...*/}
Run Code Online (Sandbox Code Playgroud)
..我有:
class SomeClass {
public:
template<typename DerivedType>
DerivedType GetDerived();
private:
vector<Base*> m_classes;
}
Run Code Online (Sandbox Code Playgroud)
在GetDerived()
我遍历 m_classes 向量的函数中,我想做一些类似的事情:
if(m_classes[i] == DerivedType) {
return m_classes[i];
}
Run Code Online (Sandbox Code Playgroud)
...并假设我们知道 m_classes 中的一个对象将包含一个“DerivedType”对象。
例子:
m_classes[2] = Base* BasePtr = new Derived1;
Run Code Online (Sandbox Code Playgroud)
.. 在这种情况下,我想像这样使用 GetDerived 函数:
GetDerived<Derived1>();
Run Code Online (Sandbox Code Playgroud)
.. 这应该返回 m_classes[2]
我该怎么做呢?如何将基指针对象与派生类类型进行比较?更准确地说,这个GetDerived()
函数应该是什么样子的?
在我正在为学校做的项目的最后一部分,我应该if-else
在for
循环中使用一个语句,但我不知道如何做到这一点.我可以使用大量的if-else
陈述来做同样的事情,但我不认为我的老师会很感激.
以下是家庭作业最后部分的说明......
计算等级(A,B,C,D或F)并使用if-else循环存储在另一个名为grade的Array8中,并在for循环中使用以下截止值来分配等级.
Run Code Online (Sandbox Code Playgroud)1. Average Grade 2. >= 90 A 3. >=80 and <90 B 4. >=70 and <80 C 5. >=60 and <70 D 6. <60 F
到目前为止这是我的代码......
public class Proj5 {
public static void main (String[] args) {
String[] Array1= {new String("Adam"),new String("Smith"),new String("Jones"),new String("Becky"),new String("Taylor")};
Integer[] Array2={new Integer(90),new Integer(89),new Integer(86),new Integer(76),new Integer(95)};
Integer[] Array3={new Integer(92),new Integer(79),new Integer(85),new Integer(90),new Integer(87)};
Integer[] Array4={new Integer(93),new Integer(80),new Integer(90),new Integer(87),new Integer(92)};
Integer[] Array5={new Integer(90),new Integer(77),new Integer(86),new …
Run Code Online (Sandbox Code Playgroud) 所以我最近去过面试,并被问到以下问题.(实际上这只是一个测试写作,所以我不能问任何问题)
在main方法的最后,有多少对象可以进行垃圾回收?
public class Main {
public static void main(String[] args) {
Object obj;
for (int i = 0; i < 5; i++) {
obj = new Object();
}
obj = null;
}
}
Run Code Online (Sandbox Code Playgroud)
(A)0
(B)1
(C)5
我知道它是0,因为至少有一个object(obj
)将被垃圾收集,但我也知道它obj
不是真正的对象,它只是对它的引用.所以我的回答是5.
那是对的吗?如果没有,那么为什么呢?