关于创建对象的一个小问题.说我有这两个类:
struct A{
A(){cout << "A() C-tor" << endl;}
~A(){cout << "~A() D-tor" << endl;}
};
struct B : public A{
B(){cout << "B() C-tor" << endl;}
~B(){cout << "~B() D-tor" << endl;}
A a;
};
Run Code Online (Sandbox Code Playgroud)
并在主要我创建一个实例B:
int main(){
B b;
}
Run Code Online (Sandbox Code Playgroud)
请注意,B派生自A并且还具有类型的字段A.
我想弄明白这些规则.我知道构造一个对象时首先调用它的父构造函数,反之亦然.
字段怎么样(A a;在这种情况下)?什么时候B创建,什么时候会调用它A的构造函数?我还没有定义初始化列表,是否有某种默认列表?如果没有默认列表?关于破坏的同样问题.
如果"打开调用层次结构"被破坏(项目中的每个方法都为空),我该怎么办?它对代码导航非常有用,不知道,没有它如何工作!
Eclipse JDT具有"调用层次结构"功能 - 从字段/方法开始,它以递归方式查找所有引用.
IntelliJ也实现了这一点,但它只适用于方法.对于字段,您只能"查找用法",因此如果您想深入挖掘,则必须进行其他搜索.
试过'数据流到这里',但这不是我想要的.
我错过了什么吗?有没有更好的方法来探索IntelliJ中的字段使用?
这是我的示例java代码:
public class Test {
public static void main(String[] args) {
methodDepth0(
()->
methodDepth1(
()->
methodDepth2()
)
);
}
static Object methodDepth2() {
return null;
}
interface MyIF {
void call();
}
static void methodDepth0(MyIF myIf){
myIf.call();
}
interface MyIF2 {
void call();
}
static void methodDepth1(MyIF2 myIf2){
myIf2.call();
}
}
Run Code Online (Sandbox Code Playgroud)
当我methodDepth2()从Eclipse(4.4)打开方法的调用层次结构时,
open call hierarchy停止搜索下一个调用者:

我期望的是打开方法的调用层次结构,methodDepth1()直到该main方法.

在不修改源代码的情况下,当调用某个函数(例如下例中的func100)时,如何跟踪调用哪些函数以及使用哪些参数.我想输出如下:
enter func100(p1001=xxx,p1002=xxx)
enter func110(p1101=xxx,p1102=xxx)
exit func110(p1101=xxx,p1102=xxx)
enter func120(p1201=xxx,p1202=xxx,p1203=xxx)
enter func121(p1211=xxx)
exit func121(p1211=xxx)
exit func120(p1201=xxx,p1202=xxx,p1203=xxx)
exit func100(p1001=xxx,p1002=xxx)
Run Code Online (Sandbox Code Playgroud)
这可行吗?或者最少修改源代码的解决方案是什么?
我最喜欢的Eclipse功能之一是能够打开方法的调用者/被调用者层次结构.
默认情况下,该视图显示对我/我的代码库之外的类的调用...我通常不关心.
有过滤的选项了,我不想具体的包名,但我需要做相反的事情......过滤出所有包,除了在一个我想要的.这里使用什么适当的正则表达式"匹配所有字符串,除了那些以com.mycompany.?开头的字符串?"

背景:
在eclipse中工作,我有两个函数:do_something和perform_task.我知道do_something调用了许多其他函数,这些函数反过来调用其他函数(依此类推等),并在某处调用perform_task.
由于这是一个很大的项目,很多流程等等,我已经找到了两个不同的序列,其中do_something通过其他一些函数序列激活perform_task.
Actuall问题:
在eclipse中是否有办法获得某个函数的调用层次结构,但只有序列中还包含序列中的某个其他函数?
考虑到图形路径,我们有一个有向图,而不是询问节点的路径是什么x,我想知道x包含节点的节点的路径是什么y.
如何让Eclipse Call Hierarchy支持JSP文件中的调用?
我是Eclipse的Call Hierarchy功能的狂热用户,因为它帮助我导航并查找方法或其他实体的所有调用源.但我发现Call Hierarchy列表完全忽略了项目中的JSP文件,这使我的编码和调试变得困难.我必须依靠文本搜索工具来查找电话或(大部分时间)只是冒险完全错过它们.
出于某种原因,Eclipse中对JSP的支持与他们的Java源代码文件对应物相比是不合标准的,并且没有改进.这简直不可能吗?或者我错过了什么?
如果我在Eclipse中有一个Java项目,我可以右键单击一个方法名称和"Open Call Hierarchy".假设我有两个接口,A和B,它们都指定方法x().我是否有可能让Eclipse以更智能的方式使用"Open Call Hierarchy",以便只显示来自A的调用x()而不显示来自B的那些?
有没有办法将"Open Call Hierarchy"功能扩展到整个工作集或工作区?(即跨多个项目)在搜索已弃用的方法和依赖项时,这将非常方便.
call-hierarchy ×10
eclipse ×8
java ×4
c ×1
c++ ×1
constructor ×1
eclipse-juno ×1
jsp ×1
lambda ×1
regex ×1
trace ×1