Preguntas del examen final de C ++ (1)

Los libros de texto que compré no han llegado ... es aburrido ver la discusión entre las estudiantes más jóvenes y las hermanas menores en la clase de C ++. Repasemos las preguntas para consolidarlas ~
Los ejercicios de hoy son https://wenku.baidu.com/view/7232fb0f7cd184254b353523.html

Función virtual

Se declara como virtual en la clase base, y la función miembro que se redefine en la clase derivada
(función abstracta en Java)
define una función como una función virtual pura , lo que significa que la función no se ha implementado
. Se realiza el enlace dinámico. La función virtual pasa el puntero del objeto transferir
 

virtual void funtion1()=0//纯虚函数

La clase que contiene funciones virtuales puras es una clase abstracta y no es posible definir object
= 0. La esencia es establecer el puntero al cuerpo de la función como NULL.
Debe haber un cuerpo de función virtual puro redefinido en la clase derivada, de modo que la clase derivada pueda usarse para definir el objeto


Polimorfismo estático + polimorfismo dinámico

Polimorfismo estático : sobrecarga de funciones,
polimorfismo dinámico : usa herencia + encapsulación, función virtual


Operador de sobrecarga de función miembro

下列关于运算符重载的叙述中,正确的是:B
A. 通过运算符重载可以定义新的运算符
B. 有的运算符只能作为成员函数重载
C. 若重载运算符+,则相应的运算符函数名是+
D. 重载二元运算符时,必须声明两个形参

B. =, [], (), -> solo se puede sobrecargar a través de funciones miembro
C. El nombre de la función del operador sobrecargado es operador + operador
D. Cuando el operador binario sobrecargado es una función miembro, la función solo tiene una Parámetro formal , otro parámetro es implícitamente el propio objeto

在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符,则operator+有___个参数,operator*有___个参数
//1,2

Operador de sobrecarga de función miembro: el primer parámetro es el llamador
Operador de sobrecarga de función no miembro: los operandos están en los parámetros

La función de sobrecarga del operador puede ser una función miembro de la clase, puede ser una función amiga de la clase o una función normal


Herencia protegida

class MyBASE {
    
    
	private:int k;
	public:
			void set(int n) {
    
    k=n;}
			int get() const {
    
    return k;}}
class MyDERIVED:protected MyBase {
    
    
	protected :int j;
	public:
		void set(int m,int n){
    
    MyBASE::set(m);j=n;}
		int get() const {
    
    return MyBASE::get()+j;}}

Cuando heredada está protegida, la parte pública de toda la clase principal está protegida.
Por lo tanto, el número de miembros de datos y funciones de miembros protegidos por MyDERIVED es: 3 (set (int n), get (), int j)


La secuencia de llamada del constructor

Constructor de clase principal -> constructor de miembro de objeto -> constructor de subclase
(la desestructuración es lo contrario)

class A {
    
    public:A()<cout<<"A"}}
class A {
    
    public:B()<cout<<"B"}}
class C:public A 
		{
    
    B b;
		public: C(){
    
    cout<<"C";}}
int main()
{
    
    
C obj;
return 0;}	

//输出:ABC

Supongo que te gusta

Origin blog.csdn.net/Rachel_IS/article/details/104516246
Recomendado
Clasificación