#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;}解决方法 首先,回答这个问题:
当你写A a(4)时,你想要a.b.成为:
选项a)54
class A{ public: int a,b; A() { a=5; b=6; } A(int a1,int b2 = 54) { a=a1; b=b2; }};
选项b)8
class A{ public: int a,int b2 = 8) { a=a1; b=b2; }};
错误是有原因的.如果你不知道你想从代码中得到什么,你怎么能期望编译器?
编辑:编辑后 – 不可能.不是那个确切的代码.
总结以上是内存溢出为你收集整理的c – 如何处理默认构造函数和重载构造函数之间的歧义?全部内容,希望文章能够帮你解决c – 如何处理默认构造函数和重载构造函数之间的歧义?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)