1.类型
1.1 基本内置类型
基本内置类型有算术类型和空类型。算术类型分两类为整型和浮点型,下图显示了C++的算数类型:
1.2 复合类型
c++有几种复合类型:数组、结构、string、引用和指针。这里讨论引用和指针。
基本内置类型有算术类型和空类型。算术类型分两类为整型和浮点型,下图显示了C++的算数类型:
c++有几种复合类型:数组、结构、string、引用和指针。这里讨论引用和指针。
相比于c++,python中的OOP理解和使用都较简单,其把隐藏的的语法杂质和复杂性都去掉了。 ## 1.1 类对象提供的默认行为 在python的面向对象模型种,要分清类对象和实例对象。类对象就是class
定义了一个类只会,该类提供些行为就是类对象.而实例对象就是该类的实例。每次调用类,就会生成一个实例。 类对象提供的默认行为:
class
语句创建类对象并将其赋值给变量名。就像def
一样,class语句也是可执行语句,执行时会产生类对象,并赋值变量名def
内)会成为类对象的属性。class
执行时,只是赋值语句而已,赋值了一个类对象当程序运行时,Python内部会将源代码(.py文件中的程序)编译成所谓的字节码的形式,就是将每一行源代码语句从上到下翻译过来,翻译成一组字节码的指令.这些字节码可以提高执行速度;比起源代码语句,字节码要执行快的多。
如上所示,一个c源文件会先经过预处理,将头文件展开、宏替换和去注释;然后经过编译器生成汇编文件,再有汇编器生成二进制文件,最后再经过链接器将函数库中相应的代码组合到目标文件
预处理:预处理器会扫描源代码文件,根据以“#”开头的预处理指令执行一些文本替换和文件包含操作。例如,预处理器会把所有的#include指令替换为对应的头文件内容,并将定义的宏展开。生成.i
文件
编译:编译器将经过预处理的源代码文件翻译成汇编代码,这是一种与具体机器体系结构相关的低级代码。生成.s
文件
汇编:汇编器将汇编代码转化为机器码,并生成一个目标文件(.obj 或 .o)。目标文件包含机器指令和一些元数据,如符号表和重定位信息。生成二进制.o
文件
链接器将目标文件和库文件的代码和数据全部拷贝到可执行文件中,形成一个独立的、包含所有必需代码和数据的可执行文件。在运行时,可执行文件不需要依赖外部库文件,所有需要的代码和数据都已经包含在可执行文件中
在动态链接中,库文件的代码和数据被保留在一个独立的文件中,被多个可执行文件共享。在链接时,链接器会将可执行文件中需要的库函数和数据的引用替换为动态链接库的符号表中对应的地址。在运行时,当程序调用一个需要动态链接库中的函数时,操作系统会将对应的库文件加载到内存中,并将调用转向库文件中的函数
注:前面我们编写的应用程序大量用到了标准库函数,系统默认采用动态链接的方式进行编译程序,若想采用静态编译,加入-static
参数。