在C++中,构造函数的参数顺序在定义和声明时必须保持一致。如果你在类定义(声明)中的构造函数和类实现(定义)中的构造函数参数顺序不一致,编译器会报错,因为它无法将两者匹配起来。
#include <bits/stdc++.h>
//#include <iostream>
using namespace std;
class Box
{
public:
Box(int h = 10,int w = 10 ,int len = 10);//在声明中 构造函数Box时指定默认参数
int volume();
private:
int height;
int width;
int length;
};
Box::Box(int h,int w,int len)//在定义 Box函数时可以不指定默认参数
{
height = h;
width = w;
length =len;
}
int Box::volume()
{
return height * width * length;
}
int main(){
Box box1;
cout<<"The volume of box1 is"<<box1.volume()<<endl;
Box box2(10);
cout<<"The volume of box2 is"<<box2.volume()<<endl;
Box box3(10,20);
cout<<"The volume of box3 is"<<box3.volume()<<endl;
Box box4(10,20,30);
cout<<"The volume of box4 is"<<box4.volume()<<endl;
return 0;
}
此处将Box::Box处的len 与 h 进行了调换数据出现问题;
#include <bits/stdc++.h>
using namespace std;
class Box
{
public:
Box(int h = 10 ,int w = 10 ,int len = 30);
int volume();
private:
int height;
int width;
int length;
};
Box::Box(int len,int w,int h)
{
height = h;
width = w;
length = len;
}
int Box::volume()
{
return height * width * length;
}
int main()
{
Box box1;
cout << "The volume of box1 is"<<box1.volume()<<endl;
Box box2(10);
cout << "The volume of box2 is"<<box2.volume()<<endl;
Box box3(10,20);
cout << "The volume of box3 is"<<box3.volume()<<endl;
Box box4(10,20,30);
cout << "The volume of box4 is"<<box4.volume()<<endl;
return 0;
}