Standard linear-algebra constructions on vector spaces extend fibrewise to vector bundles, once the resulting total spaces are given suitable topologies. Given vector bundles \(E\) and \(E'\) over the same base \(X\text{,}\) we obtain new vector bundles over \(X\text{:}\)
For the direct sum the topology is easy to describe, since \(E \oplus E'\) is the fibre product \(E \times_X E' = \{(e, e') : p(e) = p'(e')\}\text{.}\) For the other constructions one topologises the total space by declaring the fibrewise construction applied to local trivializations of \(E\) and \(E'\) to be a local trivialization. These operations satisfy the same natural isomorphisms as for vector spaces, for example \(E \otimes (E_1 \oplus E_2) \cong (E \otimes E_1) \oplus (E \otimes E_2)\text{.}\)
The operations above combine bundles over a fixed base. To compare different spaces we need to move bundles along maps, and this is what makes bundles contravariant in the base.
The pullback is again a vector bundle, since a local trivialization of \(E\) over \(U \subseteq Y\) pulls back to one of \(f^*E\) over \(f^{-1}(U)\text{.}\) By the universal property of pullbacks, \((g \circ f)^*E \cong f^*g^*E\) and \(\mathrm{id}^*E \cong E\text{.}\) Pullback also commutes with direct sum and tensor product. Writing \(\mathrm{Vect}_k(X)\) for the set of isomorphism classes of rank-\(k\) vector bundles over \(X\text{,}\) we therefore obtain a functor \(\mathrm{Vect}_k \colon \mathbf{Top}^{\mathrm{op}} \to \mathbf{Set}\text{.}\)