第一个:int a=0; 类不能在类里赋值;在类外面写int X::a = 0这样来;
第二个:int X(){a=b=c=0;} 这个根据你主函数第一个条创建一个无参对象,应该是个无参构造函数,所以呢前面int去掉改为:X(){a=b=c=0;};
第三个:X(int i,int j;int k){a=i;b=j;c=k;} 括号里的分号改成逗号- -!;
第四个:setC(int k)const{c=c+k;}这个函数没有写返回类型,即使不需要也应该写上void;
第五个:x1.setA(3); 这样访问方式是错误的,X类创建的对象x1是不能直接访问setA函数的,因为你把setA函数放在了私有(private)下;
还有一个错误:const int c; 你将c定义为常量,而后面多次对c做了修改都有问题;如果需要修改c,那么不要把c定义为const;
现在没法在机器帮你运行,你照我说的改了肯定OK啦。
class X{
private:
int a=0; //成员变量在构造函数中初始化
int &b;
const int c;
void setA(int i){a=i;}
X(int i){a=i;}
public:
int X(){a=b=c=0;} //构造函数不应该有返回值,int要去掉,
//且引用类型和const类型用初始化表进行初始化
X(int i,int j;int k){a=i;b=j;c=k;} //引用类型和const类型用初始化表进行初始化
// static void setB(int k){b=k;} //static函数只能访问static成员变量或全局变量
setC(int k)const{c=c+k;} //返回值类型没有的时候用void,另外c为const类型,不能修改
//即便c不是const,把函数声明为const就使得在该函数体
//内不能修改类成员变量
};
void main(){
X x1; //无参构造函数不可用,原因如上
X x2(3); //可以构造
X x3(1,2,3); //构造函数有问题,无法构造
x1.setA(3); //类外不能访问私有成员函数
}