2016-04-11 15 views
0

Bu book numaralı telefonu okudum ve içinde yazan kodun bazılarını anlama konusunda sorun yaşıyorum. Programın bir şirket için temel bir veritabanı işlevi görmesi gerekiyor. Çalışanların maaşlarını, şirketteki statüsünü (kiralanmış/işten atılmış) ve bu nesneyi güncellemek için arayabileceğiniz bazı yöntemleri olmalıdır. C++ Başvuru Parametreleri Kullanımlar

Bu

onlar anlamak gibi olamaz

#pragma once 

#include <string> 

namespace Records { 
    const int kDefaultStartingSalary = 30000; 

    class Employee 
    { 
    public: 
     Employee(); 

     void promote(int raiseAmount = 1000); 
     void demote(int demeritAmount = 1000); 
     void hire(); // Hires or rehires the employee 
     void fire(); // Dismisses the employee 
     void display() const;// Outputs employee info to console 

     // Getters and setters 
     void setFirstName(const std::string& firstName); 
     const std::string& getFirstName() const; 

     void setLastName(const std::string& lastName); 
     const std::string& getLastName() const; 

     void setEmployeeNumber(int employeeNumber); 
     int getEmployeeNumber() const; 

     void setSalary(int newSalary); 
     int getSalary() const; 

     bool getIsHired() const; 

    private: 
     std::string mFirstName; 
     std::string mLastName; 
     int mEmployeeNumber; 
     int mSalary; 
     bool mHired; 
    }; 
} 

sağlamak kodudur neden setFirstName ve diğer belirleyiciler/alıcılar sonra, parametreleri referans olarak yer geçiyoruzsetLastName üzerinde (setSalary gibi) değere göre geçiyorlar. Birisi bunun neden iyi bir uygulama olduğunu açıklayabilirse, bu mükemmel olur! Kitaptaki seçimini açıklamadılar. işte (sadece bunun adresini yolluyoruz beri referans olarak geçerken

+0

http://stackoverflow.com/questions/2582797/why-pass-by-const-reference-instead-of-by-value –

cevap

0

sen, sadece işlev çağrısı için, bellekte verilerin bir kopyasını yapmak gerekmez anlamına gelir, bu nedenle orijinal veri kullanıyor olsanız ayrıca neden bir const referansı yapmak isteyebilirsiniz). Basit bir değişken için, performans anlamında gerçekten önemli değildir, ancak daha büyük nesnelerle, bir kopyasını yapmaktan kaçınmak daha hızlıdır.

Temel bir varsayım, nesne için başvurular ve değişkenler için değerler kullanmak iyi bir fikir olmasıdır. Ancak bazı durumlarda, gerçekten başka birçok şeye bağlı. Örneğin, o zaman size performansı mal olacak önbellek isabetsizlik alabilirsiniz, fonksiyon ağır calcuation bir sürü yapacak ve bellekte yerde olabilecek bazı nesnesine bir başvuru, var ise. Yani farklı durumlar için düşünülecek pek çok şey var. Ancak, bir önceliğin, nesneler ve değişkenler için değişkenlere yönelik referansları kullanması için geçerli olan kural, genel olarak iyi bir yaklaşımdır.