c++中的类除了具有封装的意味外,还有一点就是要使得定义的类可以像内置的类型(如int等)一样容易让人理解。例子:
#include <stdio.h>
class A{ // 定义一个类A
public:
A(int a) : n(a){} // 类A的构造函数,参数为一个int型变量a
private:
int n; //类的成员变量
};
main()
{
A a(3); // 定义一个类A的对象a,使用3去初始化a,即调用A(3)来初始化a.n
int b(3); // 与内置类型一样,定义一个int变量b,使用3去初始化,只不过可以理解为int的构造函数是语言已经做好了的。
}
追问那A(int a):n(a){}是什么
追答是类A的构造函数,将形参a的值赋给成员变量n。所以执行A a(3),就会调用该构造函数,使得对象a的成员n值为3啦。
追问构造函数内容n(a)为什么不写在括号里面呢?
追答这是构造函数的初始化列表使用方法,在这里与写在{}里面是一样的。
即等价于A(int a) { n = a;},但是有的成员变量是只能在初始化列表里面赋值,比如引用类型成员变量。