在头文件中实现getter和setter

Max*_*ron 8 c++ getter setter

我有一个简单的问题,在头文件中实现getter和setter是一个好习惯吗?

class WebsocketSession : public boost::enable_shared_from_this<WebsocketSession>{
public:
    WebsocketSession(boost::asio::io_service& io_service, WebsocketServer& server);

    tcp::socket& getSocket() { return socket_; } // <---  This
private:
    tcp::socket socket_;
    WebsocketServer& server_;
};
Run Code Online (Sandbox Code Playgroud)

dor*_*ron 18

优点

getter和setter将被内联,因此它们不会有任何函数开销.

坏处

您将无法对getter和setter进行任何更改,而无需使用您的类重新编译所有代码.当您的类的实现位于不同的DLL或.so文件中时,这尤其糟糕.

我个人不喜欢在头文件中放置getter和setter.

  • “*getter 和 setter 将被内联,因此它们不会有函数开销。*”对于具有链接时优化等的现代编译器来说仍然如此吗? (3认同)