*   >> Lectura Educación Artículos >> science >> programación

Puntero a operadores miembros en C ++

Los operadores de C ++ - Parte 7 Introducción Esto es parte de mi serie 7, Operadores de C ++. En esta parte de la serie, nos fijamos en lo que se conoce como operadores puntero a miembro. Hay dos operadores-puntero a miembro. No voy a explicar sólo los operadores puntero a miembro de este artículo; Voy a explicar otras cosas que van con él que es posible que no conozcas. Nota: Si no puede ver el código o si cree que falta algo (enlace roto, la imagen ausente), simplemente en contacto conmigo en [email protected].

Es decir, en contacto conmigo para el más mínimo problema que tenga acerca de lo que está leyendo. Prerrequisito Usted debe haber leído en este blog, los artículos, "C ++ Punteros", "C ++ Espacios de nombres Fundamentos" y "Los punteros a clases en C ++" o artículos similares, antes de leer esto. Estos tres artículos se encuentran entre las dos series que he mencionado en las partes anteriores de esta serie. Encuadernación Imagine que tiene dos clases, A y B, y la clase A es una propiedad (objeto) de la clase B. Es una instancia de un objeto a partir de B.

Luego modifica el inmueble objeto de la B, que es de clase A. A continuación, puede enlazar esta propiedad de B al objeto de B para que se verán los efectos de un objeto instanciado de A. Veremos ejemplos a continuación. El operador binario. * Veamos un ejemplo que utiliza el. * Operador. El operador consiste en el punto seguido por el asterisco. Considere el siguiente código: #include using namespace std; class A {public: int propA; }; clase B {public: Un propB; }; A B :: * propBPtr = & B :: propB; int main () {B b; b.propB.propA = 9; Una a = b * propBPtr.

; cout return 0; Dos clases}, A y B se describen. Clase A tiene una propiedad, propA, que es de tipo int. Clase B tiene una propiedad, propB, que es de la clase un tipo. propB es una instancia de la clase A. Después de la descripción de la clase B en el código, usted tiene la declaración, AB :: * propBPtr = & B :: propB; Esta declaración es una declaración de inicialización. El operador puntero a miembro trabaja con un puntero a propB en la clase B. Este es un puntero especial, ya que es un puntero a la propiedad en la descripción de la clase y no a un objeto instanciado de la clase.

Tenga en cuenta que la propiedad en la clase B en el que estamos hablando aquí es de tipo A. La descripción de la clase es similar a una descripción del espacio de nombres. Así que para tener acceso a una propiedad de una clase, es necesario que el operador de ámbito (: :) justo cuando usted lo necesita acceder a un identificador en una descripción del espacio de nombres. Veamos ahora leer la declaración de inicialización: A la derecha del operador de asignación simple que tiene una referencia (& B :: propB) a la propiedad en la descripción de la clase B, que es de tipo A.

Nota el uso del operador de alcance Ya está. A la izquierda, usted tiene la declaración de puntero de esta propiedad que es en la descripción de la clase B y el puntero apunta a una propiedad de tipo A. Así que la declaración de puntero comienza con A, entonces B para la clase B, el operador alcance, entonces puntero asterisco y el puntero; usted puede dar cualquier nombre que desee para el puntero. Esta declaración es una inicialización especial puntero. Ahora echemos un vistazo a lo que está en la función principal. En main un objeto de B, llamado b, se crea una instancia.

La propiedad, propB del objeto b Después se accede. Esta propiedad es de tipo A. El objetivo de este acceso es darle un valor a la propiedad int de la característica en b. Por lo que es propA del objeto, propB del objeto b que realmente se accede. Así se comienza con b, entonces a punto, entonces propB luego un punto y luego propA. Bueno, a continuación, tiene la atribución de un int, que en este caso es de 9. La siguiente sentencia utiliza el operador puntero a miembro. Se une propB utilizando su puntero a la propiedad en la descripción de la clase B. El puntero es el segundo operando de la.

* Operador y el objeto B es el primer operando del operador. El resultado (o valor de retorno) de esta unión es un objeto de tipo A. El resultado se asigna (copiado) a un objeto instanciado del tipo A en el código; este objeto se llama, un Éstos son citas de la especificación C ++ sobre el operador de unión, (. *). "El operador binario. * Se une a su segundo operando, que deberá ser del tipo" puntero a miembro del T "(donde T es un tipo definido por completo de clase) a su primer operando, la cual será de clase T. El resultado es un objeto del tipo especificado por el segundo operando. ".

Ahora la siguiente declaración muestra el valor de la propiedad de un int. Este valor es 9, que se asigna a la propiedad int del objeto de tipo A, que es propiedad de la descripción de clase B. Debido a la unión, el nuevo objeto instanciado, una, tiene el valor de su propiedad. El operador binario -> * Este operador se inicia con el símbolo -> seguido de *. El propósito de este operador puntero a miembro es el mismo que el del operador anterior, pero su primer operando es un puntero al objeto B y no el identificador b objeto.

El siguiente código muestra cómo usarlo: #include using namespace std; class A {public: int propA; }; clase B {public: Un propB; }; A B :: * propBPtr = & B :: propB; int main () {B * bPtr; bPtr-> propB.propA = 9; Una a = bPtr -> * propBPtr; cout return 0; } En el código anterior, la declaración para el operador puntero a miembro es, A a = bPtr -> * propBPtr; Los operadores puntero a miembro operan de izquierda a derecha. Usted tiene dos de ellos, que son * y -.>

Page   <<       [1] [2] [3] >>
Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.