- 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
References
        MarJC5 edited this page Oct 28, 2022 
        ·
        1 revision
      
    References are often confused with pointers but three major differences between references and pointers are:
- You cannot have NULL references. You must always be able to assume that a reference is connected to a legitimate piece of storage.
- Once a reference is initialized to an object, it cannot be changed to refer to another object. Pointers can be pointed to another object at any time.
- A reference must be initialized when it is created. Pointers can be initialized at any time (can be null).
References are aliases for existing variables. It is a pointer that is constant and always dereferenced and never voi
References are usually used for function argument lists and function return values.
class Student
{
	private:
		std::string _login;
	public:
		Student(std::string const & login) : _login(login)
		{
		}
		std::string&	getLoginRef()
		{
			return this->_login;
		}
		std::string const & getLoginRefConst() const
		{
			return this->_login;
		}
		std::string*	getLoginPtr()
		{
			return &(this->_login);
		}
		std::string const * getLoginPtrConst() const
		{
			return &(this->_login);
		}
};int main()
{
	Student 	bob = Student("bfubar");
	Student const jim = Student("jfubar");
	// use a const function on a non-const variable is not a problem
	std::cout << bob.getLoginRefConst() << " " << jim.getLoginRefConst() << std::endl;
	std::cout << *(bob.getLoginPtrConst()) << " " << *(jim.getLoginPtrConst()) << std::endl;
	bob.getLoginRef() = "bobfubar";
	std::cout << bob.getLoginRefConst() << std::endl;
	*(bob.getLoginPtr()) = "bobbyfubar";
	std::cout << bob.getLoginRefConst() << std::endl;
	return (0);
}