C++类和对象的学习【part2:对象特性】
构造函数和析构函数
完成对对象的初始化和清理。
编译器强制,自动调用。
构造函数语法:
类名(){}
析构函数语法:
~类名(){}
构造函数的分类及调用
分类方式:
- 按参数分类:有参构造和无参构造
- 按类型分类:普通构造和拷贝构造
三种调用方式:
- 括号法
- 显示法
- 隐式转换法
具体程序如下:
// arrayone.cpp -- small arrays of integers
#include <iostream>
using namespace std;
//构造函数的分类和调用
class Person
{
public: //一定要写在public权限之下
Person()
{
cout << "无参构造" << endl;
}
Person(int a)
{
age = a;
cout << "有参构造" << endl;
}
Person(const Person &p) //记住这种写法先,完成拷贝一份一样的进行构造
{
cout << "拷贝构造" << endl;
//将传入Person身上的属性,拷贝到当前类上
age = p.age;
}
~Person()
{
cout << "析构" << endl;
}
int age;
};
int main()
{
//括号法
Person p1; //默认构造函数(无参构造)
Person p2(10); //有参构造
Person p3(p2); //拷贝构造
//注意事项:调用默认构造函数时,不要加(),否则就会认为是函数声明
cout << "p2's age = " << p2.age << endl;
cout << "p3's age = " << p3.age << endl;
//显示法
Person p4;
Person p5 = Person