Pointer types
From cppreference.com
This section is incomplete Reason:
|
Contents |
[edit] Syntax
cv type * cv identifier
|
(1) | ||||||||
cv type * cv * cv identifier
|
(2) | ||||||||
return ( * identifier ) ( param_types )
|
(3) | ||||||||
return ( class_name :: * identifier ) ( param_types ) cv_qualifier
|
(4) | ||||||||
cv type & identifier
|
(5) | ||||||||
cv type * cv & identifier
|
(6) | ||||||||
cv type && identifier
|
(7) | (since C++11) | |||||||
[edit] Explanation
- Pointer to data
- Super-pointer to pointer to data
- Pointer to function
- Pointer to member function
- Reference
- Pointer to reference
- r-value reference
[edit] Notes
- If cv is before
*
, the pointed-to object is affected. - If cv is after
*
, the pointer is affected.
Syntax | meaning |
---|---|
const T * | pointer to constant object |
T const * | pointer to constant object |
T * const | constant pointer to object |
const T * const | constant pointer to constant object |
const T & | reference to constant object |
[edit] Example
#include <iostream> struct Class { int data_member; void member_function(int i) const { std::cout << "Member function: " << i << std::endl; } static void static_member_function ( int i ) { std::cout << "Static member function: " << i << std::endl; } }; void global_function ( int i ) { std::cout << "Global function: " << i << std::endl; } int main() { Class object; Class *ptr = &object; ptr->member_function(1); Class &ref = object; ref.data_member = 2; std::cout << "object.data_member = " << object.data_member << std::endl; void (Class::*ptr_to_memfun)(int) const = &Class::member_function; (object.*ptr_to_memfun)(3); (ptr->*ptr_to_memfun)(4); void (*ptr_to_fun)(int) = Class::static_member_function; ptr_to_fun(5); ptr_to_fun = global_function; ptr_to_fun(6); }
Output:
Member function: 1 object.data_member = 2 Member function: 3 Member function: 4 Static member function: 5 Global function: 6