Khai báo biến trong class: hàm khởi tạo mặc định

Cho mình hỏi tại sao mình khai báo như vậy chương trình lại chạy êm xuôi vậy:

#include <string>
#include <iostream>

class Employee
{
private:
    int m_id;
    std::string m_name;
public:
    Employee(int id=0,const std::string &name="John"):
        m_id(id),m_name(name)
    {
        std::cout<<"Employee "<<m_name<<" created.\n";
    }

    Employee(const std::string &name): Employee(0,name){}
};

int main()
{
    Employee employee;
}

Mình nghĩ biến employee được khai báo không có đối số thì phải báo lỗi chứ, do compiler đã không tạo default constructor trong trường hợp này.

lúc này m_id đang gần ==0 còn name thì gần là john đây, đó bạn đã khai báo rồi;
thật ra trong c bạn viết hàm giả sử void cong(int a=9,int b=6) printf(“a+b=%d”,a+b);
rồi vào main chỉ cần ghi cộng() thì nó vận chạy mà ko cần tham số

hoặc có thể bạn hiểu sai về lớp và đối tượng … khai báo int a , thì lớp ví như int , còn a là đối tượng

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