构造函数超载产生混乱
constructor overloading creating confusion
#include<bits/stdc++.h>
#define mpq pair<int,Query>
using namespace std;
class Query{
public:
int a1,a2,b1,b2,c1,c2,d,l,r;
Query(){}
Query(int a1,int a2,int b1,int b2,int c1,int c2,int d,int l,int r){
this->a1=a1; this->a2=a2;
this->b1=b1; this->b2=b2;
this->c1=c1; this->c2=c2;
this->d=d; this->l=l; this->r=r;
print();
}
Query(int d,int l,int r){
Query(0,1,0,1,0,1,d,l,r);
}
void print(){
cout<<d<<" "<<l<<" "<<r<<endl;
}
};
map<int,Query> query;
int main(){
query.insert(mpq(1,Query(0,1,0,1,0,1,1,1,1)));
query[1].print();
cout<<endl;
query[4]=Query(4,4,4);//not working properly
query[4].print();//giving output of query[1].print
cout<<endl;
query[2]=Query(0,1,0,1,0,1,2,2,2);
query[2].print();
}
我无法解释此代码的输出 query[4].print()
给出意外的输出
我期望输出为
4 4 4
但是它给予
1 1 1
作为输出
这里的问题是
Query(int d,int l,int r){
Query(0,1,0,1,0,1,d,l,r);
}
什么也没做。Query(0,1,0,1,0,1,d,l,r);
创建一个临时Query
,然后将其销毁。我认为您打算使用委派构造函数,看起来像
Query(int d,int l,int r) : Query(0,1,0,1,0,1,d,l,r) {}
相关文章:
- 如何克服提升精神AST混乱
- 寻找地理和伤害意味着超载
- 没有可行的超载'='用于shared_ptr
- "专业化不参与超载"
- 整数类型应该显式转换(例如"int"到"无符号")还是只会增加混乱?
- 虚拟超载运算符>>和<<
- std::result_of语法混乱
- 使用具有默认参数的函数模板进行 decltype 会使结果混乱(一个有趣的问题或 gcc 的错误)
- 为什么我的超载"+"运算符返回的总额错误?
- C++中多线程的混乱
- Arduino LCD 显示屏显示混乱的字母
- 在MSDOS编译器上,用大于最大值的值初始化int时输出混乱
- 库设计混乱.. "public"/"private"(模板)标题,库文件..?
- 常量指针上的混乱
- 智能手机代码厨师问题逻辑混乱
- C++ 超载 += 用于两个袋子的合并,返回类型为空隙
- 数组和指针使算术混乱
- C++智能指针混乱
- C++11 中对超载'ref(Select::Expressions::Code&)'的调用模棱两可
- 构造函数超载产生混乱