学习任何东西的时候我们应该了解其功能,只有知道如何用最便利化的使用时才是对它的真正意义上的了解。
用struct/class构造函数目的或意义主要是为了使目标变量初始化,也可以说是给目标变量赋值。
1: struct构造函数
赋值写法
struct f{
f(int a)
{
x=a;
y=0;
}
int x,y;
};
严格意义上的初始化
struct f{
f(int a):x(a),y(0){}//此处的大括号不能省略
int x,y;
};
其它方式表达,括号里可以不含参数(使用时相符时,这里主要可以初始化)
例子:
struct f(){
f():x(1),y(0){}
int x,y;
};
了解了如何构造,接下来就可以知道如何使用。
1:含参的结构(以上面的为例):
struct f{
f(int a):x(a){}
int x;
};
int main()
{
f p(7); //定义一个p使struct中a=7;这里相当于用f结构定义一个函数p(a),p(a)对应于f(int a)
cout << p.x<<endl; //p.x引用函数中的返回值(由于该处没有return x这种结构)
return 0;
}
2.不含参数:
struct node
{
node():x1(1),y1(0){}
int x1, y1;
};
int main()
{
node a; //直接定义,由于原函数里()无内容,所以这里不需要赋值
cout << a.x1<< endl<< a.y1;//与有参数一致无区别
return 0;
}
2:class构造函数
与struct构造相似,但是class中要考虑值在public、protect、private中的位置。
区别:成员默认是private,struct 默认是public
区分一下class中public,protect和private访问权限:
public可以都直接访问,protect和private都可以通过有友元类或友元函数访问,但是在继承下访问有其它限制,这里重点讲构造函数,就不列举了。
最最最最最简单的一种(与struct相似):
class t
{
public:
t():x(1),y(0){}
int x,y;
};
int main()
{
t t1;
cout << t1.x << endl << t1.y;
return 0;
}
(太困了,后面的待补吧)