Dòng A b (3) tạo ra sự mơ hồ vì nó có thể gọi bất kỳ một trong hai nhà xây dựng có thể có. Hoặc là đối số tham số duy nhất parametrized constructor hoặc đối số parametrized hai đối số với đối số mặc định. Tôi giải quyết điều này như thế nào?Làm thế nào để xử lý sự mơ hồ giữa constructor mặc định và constructor quá tải?
#include<iostream>
using namespace std;
class A
{
public:
int a,b;
A()
{
a=5;
b=6;
}
A(int a1)
{
a=a1;
b=54;
}
A(int a1,int b2=8)
{
a=a1;
b=b2;
}
void show()
{
cout<<"a="<<a<<" b="<<b<<endl;
}
};
int main()
{
A a(3); // I want A(int a1,int b2=8) to get executed
A b(3); // I want A(int a1) to get executed
a.show();
b.show();
return 0;
}
Tránh những thứ như vậy để bắt đầu, bạn có hai lệnh gọi hàm tạo giống hệt nhau nhưng tạo ra các đối tượng khác nhau. –
Trong một, bạn chỉ định 'b' 54 nếu không có đối số, và mặt khác, bạn chỉ định nó là 8 trong cùng hoàn cảnh. Có chuyện gì vậy? Tôi nghĩ đây là trường hợp của vấn đề XY. Nếu có một số lý do bạn muốn hành vi này, có một vấn đề cấp cao hơn. – chris
là không có cách nào để giải quyết sự mơ hồ này để nó gọi constructor chúng ta muốn nó? – Ashwyn