很好的问题,知识点还挺多,
1:构造函数了解一下,以及private和public的区别,怎么可以调用到函数
2:引用和const了解一下,以及构造函数初始化(默认构造函数,拷贝构造函数,赋值构造函数),成员变量在不同的地方初始化的差异。
3:基本语法问题,函数的返回值,const修饰函数时有什么要求。
4:类对象的定义,以及定义时执行的相关构造函数,以及类对象的成员函数的调用。
5:函数拷贝传参也了解一下。
class XX
{
private:
int a; //这是值
int& b; //这是引用 注意引用的特性 定义时初始化啊
const int c; //这是const类型啊 定义时初始化
public: //这两个函数定义成私有的话你对外就用不成啊 要定义成public
void setA(int i) { a = i; }
XX(int i) :b(a), c(0) { a = i; } //还有 构造函数 不要返回值啊
//构造函数啊 你要定义成public才能对外用 注意成员参数的特性 初始化的方式啊
public:
XX(): a(0), b(a),c(1) { //构造函数啊 b,和c不能写在函数块中初始化,因为定义时要初始化啊,可以这样写
// a = b = 0;
}
XX(int i, int j, int k):b(j),c(k) { //同上 这里b是引用,然后 函数的拷贝传参,b就无效了 是不对的想用指针的话定义成int *
a = i;
// b = j;
// c = k;
}
void setB(int i) const { //你上面已经定义了一个setA 定义两个你想干嘛
//你把成员函数修饰为const,你内部修改成员变量想干嘛
printf("%d %d %d\n", a, b, c);
}
};
int main(void)
{
//几种初始化方式 调用对应的构造函数 这里的构造函数要对 并且是对外提供的public啊 private没用
XX x1;
XX x2(2);
XX x3(1, 2, 3);
//只能调用public的函数啊
x1.setA(3);
x1.setB(0);
x2.setB(0);
x3.setB(0);
return 0;
}
贴出报错信息。最后一句可能应该为x1.set
加上一个点代表调用方法
在定义的类不能直接对变量赋值,所以int a=0;是不对的,还有就是SetA 是函数的重载?那应该形参个数不同,或者类型不同。