1、拷贝构造函数
很多人都会说:“构造函数不就是在新建(构造)一个对象的时候调用一下吗……这有啥可讲的……
class student {
private:
int a;
public:
int b;
student(int num) { b = num; }
};
int main()
{
student n(1);
cout << n.b;
return 0;
}
///样例,利用构造函数来进行给b赋初值。
但是假如有一个student类n和n1,这个时候你就会发现一个有趣的事情,如果你要让n中的数据等于n1,你恐怕要写很多语句。这时候就是拷贝构造函数的用途了。
你可以轻松的通过n来构造n1……
class student {
private:
int a;
public:
int b;
student() { }
student(int num) { b = num; }
student(const student &z) { b = z.b; }
};
int main()
{
student n(10),n1(n);
cout << n.b << endl;
cout << n1.b;
return 0;
}
这可太错误了,如果写成这个样子,恐怕是不可以的,毕竟人家是拷贝构造,还是只能在构造的时候使用……
int main()
{
student n(10),n1;
cout << n.b << endl;
n1(n);
cout << n1.b;
return 0;
}
当然系统会自己提供一个默认构造函数的……也就是n=n1;
2、析构函数
要点就是main函数结束后,析构多个对象时。系统首先析构静态的局部对象,最后析构全局对象。
class student {
private:
int a;
public:
int b=10;
student(int num) { b = num; }
~student() { cout << b << endl; }
};
void test()
{
student zj(29);
cout << zj.b-1 << endl;
}
int main()
{
student n(1);
cout << n.b+1 << endl;
test();
return 0;
}
3、const(常量)和类
如果你有一个函数被加上了const,那么它就不能调用其他的函数、更改数值等操作,起到安全的作用。
class student {
private:
int a=50;
public:
int b=10;
student(int num) { a = num; }
void look_a() const { cout << a << endl; }
void look_b() { cout << b << endl; }
};
int main()
{
student n(50);
n.look_a();
n.look_b();
return 0;
}
4、静态成员