构造函数
- 当进行构造对象的时候默认调用的成员方法
- 如果没有实现构造函数,系统会生成一个默认构造函数
- 当自己实现了构造函数之后,系统就不会生成默认构造函数了
- 默认构造函数:除了this指针以外没有其他参数的构造函数
- 在调用默认构造函数时,不带括号,与定义对象的形式的一致。例如:Person p1;//ok
- Person p1();//error
为什么要引入构造函数?
- 如果在创建一个对象时,要给它赋初值,如果给一个对象赋值,很容易,可如果要给多个对象赋值,就得一个一个的来,比较费时,所以就有了构造函数,它的作用就是在创建一个对象时,给成员属性或其他需要的地方初始化。
class Person
{
public:
int _age;
int _sex;
char* _name;
Person() //默认构造函数
{
cout << " Person() " << endl;
}
Person(int age, int sex, char* name)//构造函数,与对象类型同名
{
_age = age;
_sex = sex;
_name = name;
}
void work()
{
cout << _name << " work ." << endl;
}
void eat()
{
cout << _name << " eat." << endl;
}
};
int main()
{
char name1[] = { "zhangsan" };
Person p1(32, 1, name1);
cout << p1._age << endl;
cout << p1._sex << endl;
cout << p1._name << endl;
}
浅拷贝
- 浅拷贝定义:指针直接给指针赋值
- 一般在有指针的地方不使用浅拷贝,因为可能会造成内存泄漏,下面举例说明
class Person
{
public:
int _age;
int _sex;
char* _name;
Person(int age, int sex, char* name)
{
_age = age;
_sex = sex;
_name = name;//此处的赋值为浅拷贝
}
void work()
{
cout << _name << " work ." << endl;
}
voi