C++程序的执行顺序是什么?

C++程序的执行顺序是什么?,第1张

执行是从 main 函数开始,但如果在main函数前存在类对象变量的声明,则可能会先调用类的构造函数来创建类对象。

第一个问题,如果函数的调用语句在定义之前,则需要进行声明,告诉计算机这个程序中有这么一个函数。因为编译是从上至下进行编译的,如果函数的调用放在了这个函数定义之前(未经声明),在编译时就会报错。

如果要使用的函数的定义在它使用之前,则不用进行声明(因为此时编译器已经知道这是一个函数了)(但是一般程序员都会把主函数放在程序的最上面,这样可以让程序很直观,但这样做则需要将后面定义的函数先进行声明)。

第二个问题,其中函数什么时候需要声明,什么时候不需要声明,我在上一个问题中已经讲了。区分函数的定义和其声明有一种方法。

函数的声明一般只有一句话(比如: int sum (int i);),这句话其实就是函数的定义的首句话。而函数的定义则会在其后面添加该函数的内容(既大括号里的语句。如:int sum (int i)    { .....})

另外,int sum (int i)    { .....}这个并不是函数的调用,而是函数的定义。函数的调用这是这样的(就用程序中的sum做例子):sum(这里填写实参)。

顺序结构的程序是严格按照程序中代码的先后执行的;如果有选择结构,就会根据具体条件执行相应的代码。循环结构中也会有条件判断,会根据不同的情况执行不同的代码的。有的还有交互技术,会根据使用者的要求或是外界的情况作出响应的。

比如说,自动驾驶系统,会根据路况的不同选择不同的驾驶方案,会自动避让障碍物,等等。

C# 类的初始化顺序

继承类的static数据成员的初始化器,

继承类的static构造器 (在类名, 第一次被引用时, 调用, 如果, 没有这个构

造器, 则static数据成员何时被初始化, 是不可预测的)

继承类的实例型数据成员的初始化器

在执行继承类的构造器的内容之前

基类的static数据成员 的初始化器 即 static int a = 1

/// 类数据成员的定义

基类的static 构造器 ,(如果,基类的类名, 先于继承类被引用, 则先执行基

类的static构造器)

基类的实例型数据成员的初始化器

基类的构造器

接着执行继承类的构造器的内容

Example :

public class Base

{

A: private static int Number = 12

B: private int localNumner = 1

C: static Base()

{

///

}

D: public Base()

{

}

}

public class Child : Base

{

E: private static int ChildNumber = 14

F: private int local_child_number = 7

G: static Child()

{

///

}

H: public Child()

{

I: ///

}

}

Child child = new Child()

初始化顺序为

E G F H A C B D I

static构造器的调用时刻是, 第一次引用该类的类名

public class Test

{

static Test()

{

}

public staitc int Account

{

get

{

return 1

}

}

/// 只是举例

public static int GetAccount()

{

return 1

}

public class Nested

{

}

public delegate void Add()

}

当 X1: Test.Account()

X2: Test a = new Test()

X3: Test.GetAccount()

X4: Test.Nested p = new Test.Nested()

X5: Test.Add a = new Add(someMethods)

{ X1, X2, X3, X4, X5 }, 只要第一次出现其中的某一个就调用Test的

static构造器


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10992258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存