using System;
class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y = A.X + 1;
static B() { Console.WriteLine("{0}", Y); }
static void Main()//程序入口点在这里提高了类B的优先级
{
Console.WriteLine("{0},{1}", A.X, B.Y);
Console.ReadLine();
}
}
程序入口点在类B中提高了类B的优先级,即先执行类B的public static int Y = A.X + 1;再执行其中A.X调用了 static A(),再执行构造函数static B() 所以结果为:
2
1, 2
程序入口点在类B外面:
using System;
class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y = A.X + 1;
static B() { Console.WriteLine("{0}", Y); }
}
class C
{
static void Main()
{
Console.WriteLine("{0},{1}", A.X, B.Y);
Console.ReadLine();
}
}
此时,根据 Console.WriteLine("{0},{1}", A.X, B.Y); 先执行A.X即调用static A()而 X = B.Y + 1;中的B.Y调用了class B所以执行public static int Y = A.X + 1再执行static B() 然后执行 X = B.Y + 1;结果为:
1
2,1
若为:Console.WriteLine("{0},{1}", B.Y, A.X);先执行public static int Y = A.X + 1;其中A.X调用了static A()再执行static B() ,结果为
2
2,1
分享到:
相关推荐
在这个例子中,类`Tep`的构造函数会自增一个静态变量`N`并将其加到静态变量`Su`上,从而实现累加。最后,通过调用`GetSu`获取累加的总和。 另一种解决方法是利用递归的思路,但又不能直接使用条件判断。这里可以...
当你创建一个子类实例时,会先调用父类的构造函数,然后再调用子类的构造函数。在给出的代码中,首先会输出"FatherClass Create"两次(因为两次都创建了父类实例),然后是"ChildClass Create"。这是因为先创建了`...
软件工程题目需要考虑效率、异常问题和设计思路,例如华为的一道关于指针方面的编程题,需要将0移至数组后面,非0整数移至数组前面,并保持有序。 算法设计 算法设计需要考虑到效率和数学性,例如求出用1、2、5三...
我们可以创建一个`Cow`类,包含一个静态变量`count`用于累计牛的数量,以及一个构造函数。构造函数接受当前年份作为参数,每当创建一个新的`Cow`实例时,`count`增加1,并为每个3岁以上的新牛创建一个新的`Cow`实例...
题目展示了一个C++类`Fruit`的定义和构造函数,以及`+`运算符的重载。构造函数初始化对象的大小,并在控制台上打印出大小值。`+`运算符被重载为两个`Fruit`对象相加,同时在控制台上打印每个对象的大小值。 **知识...
7. **虚函数**:构造函数不能声明为虚函数,因为虚函数机制是在对象实例化后才起作用,而构造函数在对象创建时执行。 8. **冒泡排序**:冒泡排序的时间复杂度是O(n^2),是一种效率较低的排序算法。 9. **浮点数与...
例如,如果一个类有一个接受单个参数的构造函数,声明为explicit可以阻止使用这个构造函数进行隐式类型转换。 3. **虚析构函数** 虚析构函数在C++中用于处理多态性,确保基类指针或引用删除派生类对象时能正确调用...
但是由于`Son`类中的`name`字段并没有被初始化为具体的值(除了构造函数中的初始化),默认为`null`,所以最终输出结果为:“Sonsays,Iamnull”。 - 接着调用`tellName(name)`,这里传递的是`Son`类中的`name`字段。...
- C++中没有final关键字,但可以通过使构造函数和析构函数为私有来防止继承。示例代码给出了两种实现方式:一种是使用静态方法获取实例,另一种是利用模板和类型擦除技术,使类的行为接近普通类,但仍然不可继承。 ...
- **构造函数与析构函数起源**:构造函数负责初始化对象,析构函数负责清理资源。 - **构造函数初始化表**:使用初始化列表来确保成员变量正确初始化。 - **构造和析构次序**:了解构造和析构函数调用的顺序,特别是...
具体的题目我肯定记不清,不过我们可以换个直接的问法,如果类A和类B中有静态变量,静态语句块,非静态变量,非静态语句块,构造函数,静态方法,非静态方法,同时类A继承类B,请问当实例化A时,类内部的加载顺序...
构造函数不能声明为虚函数,因为虚函数是在对象实例化后调用,而构造过程在实例化时进行。 8. **冒泡排序时间复杂度**: 冒泡排序的时间复杂度为O(n^2),对于大量数据效率较低。 9. **浮点数与零值比较**: 在...
7. 构造函数和析构函数,以及拷贝构造函数的理解和应用。 8. 继承和多态的实现,包括虚函数和纯虚函数。 9. 异常处理,使用`try`、`catch`和`throw`进行错误处理。 10. 使用MFC创建简单的Windows应用程序,包括窗口...
**典例1**:2019年广州中考的一道题,题目中等边三角形ABC和点D、E的运动,需要证明DF∥AB,求解面积差S的最大值,并在B、F、E共线时求AE的长度。解答此类问题需要运用折叠性质、等边三角形的性质、相似三角形等,...
题目中定义了三个变量num1、num2和num3,以及一个静态初始化块和构造函数。num2是一个静态变量,num1和num3是非静态成员变量。 1式: `test.f1(20,20);test.print();` 这里调用了f1方法,传递了局部变量num1和num3...
1. **new对象底层字节码指令分析**:在Java字节码中,`new`指令用于创建一个对象,`dup`用于复制对象引用,`invokespecial`调用构造函数,`pop`用于弹出栈顶的引用,如果有多次`new`,则需要重复这些步骤。...
第五问,`new Foo.getName()`,`new`操作符用于构造函数,但`Foo.getName`不是一个构造函数,这里相当于执行`new Function()`, 输出2。 第六问,`new Foo().getName()`,这里`new Foo()`创建了一个新的实例,调用...
9. C++的动作并不都由main()引起,例如静态成员初始化、构造函数的执行等。 10. 声明`const void f(void)`为C库函数:使用extern "C" { const void f(void); }。 11. 关于const指针:A和D是等价的,表示指针不可变...
- 专业笔试:9:40-11:40,涵盖选择题、判断题、简答题和大题,主要考察C++的面向对象知识,如构造函数、析构函数、静态成员变量、new和delete操作、虚函数等,以及一道编程题测试类的继承。 4. **面试**: - 面试...
每个含有虚函数的类实例都会有一个指向这个虚函数表的指针,这个指针在对象构造时初始化。这是C++实现动态多态的基础。 2. 文件逆序存储:这是一道关于文件操作的问题,可以通过读取原文件的每个字符并按逆序写入新...