kiến thức Hướng dẫn lập trình C/C++ từ 0 đến viết được phần mềm để đi xin việc.

data race cũng là 1 dạng undefined behavior mà
Nó k phải là data race nhé.
Mà do execution order trong C++ k phải từ trái sang phải mà tùy compiler, standard k quy định nên gọi là undefined behavior. Vào cppreference mà đọc. Đừng chém lưng tung.
Edit: Hoặc đọc comment trước của t ấy, thằng Bing giải thích khá chuẩn đó
 
Nó k phải là data race nhé.
Mà do execution order trong C++ k phải từ trái sang phải mà tùy compiler, standard k quy định nên gọi là undefined behavior. Vào cppreference mà đọc. Đừng chém lưng tung.
Edit: Hoặc đọc comment trước của t ấy, thằng Bing giải thích khá chuẩn đó
Trong quora có 1 thớt về ++a + ++a luôn. Thấy có 1 ông comment ko nên sử dụng biểu thức ++a + ++a trong C và Java vì kết quả sẽ bị rối loạn.
 
thớt dead rồi, các thím cho hỏi c embedded linux network 2 3 YoE thì đi pv sẽ hỏi gì các bác nhỉ, e đang 0 yoe
 
Bác nào pro có thể giải đáp giúp em trường hợp này được không ạ
Em có class Cat kế thừa Animal với override func sound().
Theo e được biết thì:
  • Khi upcasting, từ khoá virtual ở func cha giúp pointer Cha có thể trỏ đến func Con.
  • Nhưng khi downcasting thì ví dụ của e lại ra kết quả ngược: nếu có virtual thì chọc vào func Cha, không có thì chọc vào func Con.
1708247730948.png
1708247753995.png
 
Bác nào pro có thể giải đáp giúp em trường hợp này được không ạ
Em có class Cat kế thừa Animal với override func sound().
Theo e được biết thì:
  • Khi upcasting, từ khoá virtual ở func cha giúp pointer Cha có thể trỏ đến func Con.
  • Nhưng khi downcasting thì ví dụ của e lại ra kết quả ngược: nếu có virtual thì chọc vào func Cha, không có thì chọc vào func Con.
View attachment 2339021 View attachment 2339022
thím search vtable. có virtual thì có vtable và hoạt động theo vtable, còn không có virtual thì datatype của variable là gì nó gọi luôn function của thằng đó.

via theNEXTvoz for iPhone
 
Bác nào pro có thể giải đáp giúp em trường hợp này được không ạ
Em có class Cat kế thừa Animal với override func sound().
Theo e được biết thì:
  • Khi upcasting, từ khoá virtual ở func cha giúp pointer Cha có thể trỏ đến func Con.
  • Nhưng khi downcasting thì ví dụ của e lại ra kết quả ngược: nếu có virtual thì chọc vào func Cha, không có thì chọc vào func Con.
View attachment 2339021 View attachment 2339022
virtual function thì nó vào vtable ở runtime để xác định function cần gọi, không phải virtual function thì nó nhìn theo type mà xác định function cần gọi lúc compile luôn. Code bên trái thím đã khai báo virtual nên class này sẽ có vtable, code bên phải không có khai báo nên nó xác định luôn lúc compile. Type đang là Cat* thì nó gọi Cat::sound. Vấn đề không phải upcast hay downcast, mà là function đó có trong vtable hay không thôi.
 
thím search vtable. có virtual thì có vtable và hoạt động theo vtable, còn không có virtual thì datatype của variable là gì nó gọi luôn function của thằng đó.

via theNEXTvoz for iPhone

virtual function thì nó vào vtable ở runtime để xác định function cần gọi, không phải virtual function thì nó nhìn theo type mà xác định function cần gọi lúc compile luôn. Code bên trái thím đã khai báo virtual nên class này sẽ có vtable, code bên phải không có khai báo nên nó xác định luôn lúc compile. Type đang là Cat* thì nó gọi Cat::sound. Vấn đề không phải upcast hay downcast, mà là function đó có trong vtable hay không thôi.
Ui cảm ơn 2 thím nhé. Biết cái Vtable này thì dễ hiểu thật, trên trường lớp chả thấy giảng viên nói đến vấn đề này
 
Ui cảm ơn 2 thím nhé. Biết cái Vtable này thì dễ hiểu thật, trên trường lớp chả thấy giảng viên nói đến vấn đề này
Có thời gian mà muốn học C++ thì kiếm cuốn C++ Primer, 5th Edition mà đọc thím, trên libgen có ấy. Trong trường thường chỉ dạy C++ ở mức tối thiểu thôi, muốn hiểu sâu hơn thì phải tự mình chủ động.

Cuốn này hơi cũ so với C++ hiện tại, nhưng mà phần nền tảng của C++ thì vẫn vậy nên chưa outdated đâu. Đọc xong muốn phát triển tiếp thì kiếm tiếp The C++ Programming Language, 4th Edition với Effective Modern C++.
 
em quen syntax c rồi các bác có mẹo nào giúp học nhớ syntax c++ nhanh không ? học lại từng tí một thì lười quá :) cái leetcode của em ko chuyển qua c đc
 
Làm nhiều sẽ nhớ, chả có mẹo gì đặc biệt,
với tôi, người nghỉ code embedded c++ lâu, thì giờ kêu viết hello world tất nhiên sẽ google
bác làm nhúng mảng nào vậy bác, em từ điện đang hướng theo autômtive linux bác có lời kinh nghiệm gì ko? em xin đc chỉ giáo
 
Back
Top