#include<iostream>
#include<vector>
using namespace std;
class test{
int a,b;
public:
test():a{0},b{0}{}
test(int,int);
void copy(test);
void print();
};
test::test(int a,int b){
a=a;
b=b;
}
void test::copy(test obj)
{
a=obj.a;
b=obj.b;
}
void test::print()
{
cout<<test::a<<" <========> "<<b<<endl;
}
int main()
{
test t1(4,15);
t1.print();
test t2=t1;
t2.print();
}
以上代码应打印 4 <=========> 15 4 <=========> 15
但它正在打印 1733802096 <========> 22093 1733802096 <========> 22093
我没有遇到问题。 如果我在构造函数中更改参数名称,则会给出正确的输出。 发生这种行为的原因可能是什么?
答案 0 :(得分:2)
您要在此处重新分配参数:
test::test(int a,int b){
a=a; // You just set parameter a to its own value!
b=b;
}
不同于:
test::test(int a,int b){
this->a=a;
this->b=b;
}
,应替换为:
test::test(int a,int b) : a(a), b(b) {}
一起。