在类中有一种函数,名字与类名相同,可以有参数,但不能有返回值的函数(void也不行),即为此类的构造函数。
构造函数的作用是初始化对象,给成员变量赋初始值。有了构造函数,我们就不必专门再写初始化函数了,也不用担心忘了调用初始化函数。
定义一个类时,如果没有写构造函数,则C++编译器会为这个类生成一个默认的构造函数,默认构造函数无参数,不做任何操作。只要我们定义了构造函数,编译器就不会这样做了。一个类可以有多个构造函数。
对象生成时,不论以何种形式生成,构造函数都会被调用。其后,就不能再调用构造函数了。
例如:
class A {
private:
int a, b;
public:
void set(int a, int b);
};
//编译器自动生成构造函数
A a;
A * p = new A;
//以上默认构造函数被调用
class A
{
private:
int a, b;
public:
A(int x, int y);
};
A::A(int x, int y)
{
a = x;
b = y;
}
A a(1,2);
A a[2] = {{1,2},{3,4}};
A * p = new A[2] {{1,2},{3,4}};
A a; //错,没有无参的构造函数
一个完整的例子:
#include <iostream>
class A
{
private:
int a, b;
public:
A(int x, int y);
void printValue();
};
A::A(int x, int y)
{
a = x;
b = y;
}
void A::printValue()
{
std::cout << a << ',' << b << std::endl;
}
int main()
{
A a(1,2);
a.printValue();
A * b = new A(3,4);
b->printValue();
}
$ g++ a.cpp && ./a.out
1,2
3,4
网友评论