Có nên sử dụng auto thay thế int, double, float,...?

auto configuration_impl::get_hostname() const -> std::string {
    return hostname;
}

Chào mọi người cho em hỏi là em có nên sử dụng auto thay thế cho int, double, float,… không và trong đoạn code trên “const -> std::string” có nghĩa là gì ạ

2 Likes

khai báo biến thì tùy ý thích :V mình thì chừng nào kiểu biến dài quá > 10 ký tự thì mới xài auto :V :V :V À hoặc phải suy nghĩ kiểu biến trả về của phép tính là gì thì xài auto khỏi phải suy nghĩ, vd

int a = 3;
double b = 4.4;
auto c = a * b; // xài auto khỏi suy nghĩ a*b trả về kiểu gì :V

còn cái khai báo hàm kiểu kia là kiểu “hiện đại” của C++. Thay vì khai báo

<kiểu trả về> <tên hàm>(...)

thì khai báo thành

auto <tên hàm>(...) -> <kiểu trả về>

lý do thì có lẽ là cho giống với kiểu khai báo lambda của C++ :V :V

auto myLambda = [](...) { ... };

nhưng thực tế thì viết -> kiểu trả về gọn hơn vì kiểu trả về viết sau tên hàm sẽ biết scope của nó ở đâu luôn. Ví dụ

class LinkedList {
  struct Node { ... }; // Node nằm trong class LinkedList
  Node* begin(); // viết Node ở đây ko cần thêm LinkedList:: ở phía trước Node
};

// viết xuống dưới đây phải thêm LinkedList:: vào phía trước Node
LinkedList::Node* LinkedList::begin() { ... }

// viết kiểu hiện đại thì ko cần
auto LinkedList::begin() -> Node* { ... }

ngoài ra viết hàm kiểu auto <tên hàm>(...) sẽ dễ dàng hơn cho việc viết regex match cho function để trích các function trong 1 header file ra hơn :V


cái const kia là để báo hàm get_hostname() này sẽ ko làm thay đổi giá trị của các biến trong class configuration_impl đó. Ví dụ hàm thay đổi giá trị sẽ có tên là set_hostname(...) thì ko có const ở phía sau.

7 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?