解释一下动态联编、静态联编、兼容赋值规则、虚函数等c++的较难专业性名词
时间: 2023-08-30 07:12:38 浏览: 42
1. 动态联编:在程序运行时确定函数的具体实现,也称为运行时多态。通过使用虚函数实现。在C++中,通过将基类的成员函数声明为虚函数,派生类可以覆盖父类的虚函数,从而在运行时可以根据实际的对象类型来调用相应的函数。
2. 静态联编:在编译时确定函数的具体实现,也称为编译时多态。在C++中,函数的重载和模板实例化都是静态多态的表现。
3. 兼容赋值规则:指在C++中,派生类的对象可以赋值给基类的对象,但是基类的对象却不能赋值给派生类的对象。这是因为基类只能访问自己的成员,而不能访问派生类的成员,因此不能将基类的对象赋值给派生类的对象。
4. 虚函数:指在基类中声明的带有virtual关键字的成员函数。虚函数在派生类中可以被重载,实现多态性。在运行时,根据实际对象类型调用相应的函数。在C++中,通过将基类的成员函数声明为虚函数,派生类可以覆盖父类的虚函数。通过虚函数,可以实现动态联编。
以上是一些较难的C++专业性名词的解释,希望可以帮助你更好地理解C++的相关概念。
相关问题
c++静态联编与动态联编详解
C++中的联编指的是将源代码转换成可执行代码的过程中,编译器如何解析函数和变量的引用。C++中有两种联编方式:静态联编和动态联编。
1. 静态联编
静态联编是指在编译期间,编译器就将函数和变量的引用与其定义进行了绑定,生成了一个可执行文件。这种方式的优点是速度快,因为所有的函数和变量的地址都是在编译期间就已经确定了。缺点是可执行文件比较大,并且修改代码后需要重新编译整个程序。
2. 动态联编
动态联编是指在程序运行期间,根据需要动态地将函数和变量的引用与其定义进行绑定。这种方式的优点是可执行文件比较小,修改代码后只需要重新编译修改的部分,不需要重新编译整个程序。缺点是速度较慢,因为需要在运行期间解析函数和变量的地址。
在C++中,动态联编通常是通过函数指针实现的,而静态联编则是通过链接器实现的。在使用动态链接库时,编译器会在可执行文件中生成一个动态链接库的引用表,程序启动时再根据需要动态地加载所需的动态链接库。
通过程序举例说明哪些情况下是静态联编(同名隐藏/类型兼容规则),哪些情况下又是动态联编
静态联编(同名隐藏/类型兼容规则)是在编译期间确定函数的调用关系,主要的场景有:
1. 函数重载:当同一作用域内有多个同名函数但参数列表不同,编译器会根据参数列表的类型和数量来确定具体调用哪个函数。
2. 父子类之间的函数重写:当子类重写父类的虚函数时,编译器会在编译期间确定调用哪个函数。
动态联编则是在运行期间根据对象的实际类型确定函数的调用关系,主要的场景有:
1. 虚函数的多态性:当一个虚函数被声明为虚函数时,编译器会将其实现为一个虚函数表(vtable),在运行时根据对象的实际类型来确定调用哪个虚函数表中的函数。
2. 使用函数指针:当使用函数指针调用函数时,编译器无法确定具体调用哪个函数,需要在运行时根据函数指针指向的函数来确定调用哪个函数。