class Foo {
Bar b;
}
b - это , содержащийся в Foo. Если объект Foo заканчивает время жизни, b также автоматически заканчивает время жизни. Это то, что моделирует композицию. b выше обозначает сам объект, а не просто указатель на него, как в Java. Поэтому, если b выходит из области видимости, объект завершает жизнь.
class Foo {
Bar * b;
}
Здесь объект b указывает на , используемый или , на который ссылается объект Foo. Если срок действия объекта Foo заканчивается, объект, на который указывает b, может продолжать жить в зависимости от обстоятельств. Это может быть использовано для моделирования агрегации и общих отношений. Объект может использоваться совместно с другими объектами Foo, например.
Указатели - это примерно те же ссылки, что и в Java. Они также могут ни на что не указывать. Если указатель указывает на ничто, это нулевой указатель.
Подобные указатели являются ссылками. Ссылки в C ++ должны быть инициализированы и могут указывать только на один (действительный) объект, для которого ссылка была инициализирована. Ссылка для этого не может содержать значение, которое может означать «ничто», как null
в Java.