如果你要构造一个自定义类的对象时,可以使用“类型构造操作符”。这将导致编译器为你调用构造函数。
比如你写了一个类,叫BaseItem.显然你可以这样定义一个BaseItem对象:
BaseItem aItem; // 调用默认构造函数;
你还可以这样定义一个BaseItem对象:
BaseItem aItem = BaseItem(); // 调用默认构造函数。这里"()"表示“类型构造操作符”,
// 用来实例化一个对象
假如你的构造函数接受一个string对象作为参数,你还可以这样定义BaseItem:
BaseItem aItem("This is a base item"); // 这会使编译器为你调用相应的构造函数。
ok,上面的都明白了嘛?下面再开始讲类的构造函数和成员函数有什么区别。
(非静态)成员函数是通过对象/指向对象的指针/指向对象的引用来调用的。你只能通过这3种方式来调用一个成员函数。那么很显然,实质上无论如何要调用成员函数都必须通过对象。
比如BaseItem里面有一个成员函数叫memfunc,那么你可以这样调用它:
aItem.memfunc(...parameters...);
而构造函数却是用来构造对象的。在对象还没形成之前,你怎么能够通过对象去调用函数?所以...你无法通过对象去调用构造函数。
假设 类名为 Student;
int main()
{
Student stu(xx, xx); // 定义对象时就会调用构造函数
stu.XXX(); // 这样就能调用 public 的成员函数。
}