В чем разница между типами возврата ссылки и указателя в C ++

Если бы я создал простой объект на C ++, в чем разница между возвратом адреса члена и возвратом указателя. Насколько мне известно, в C ++ нет автоматической сборки мусора, поэтому он не будет вести счетчик ссылок. Так зачем кому-то делать это так:

class CRectangle {
public:
    string& getName( );
    int&    getWidth( );
    int&    getHeight( );
private:
    string  name;
    int     height;
    int     width;
};

, а не так:

class CRectangle {
public:
    string* getName( );
    int*    getWidth( );
    int*    getHeight( );
private:
    string  name;
    int     height;
    int     width;
};

Я понимаю, что это позволит вам получить доступ к данным членов, но меня не беспокоит правильная инкапсуляция в этом простом примере. Так в чем разница? Ускорение? Читаемость? Стиль?

15
задан Deduplicator 20 December 2017 в 19:34
поделиться