演示:C++构造函数、重载、析构函数、
注意:
1.构造函数
2.析构函数 加~
#include <iostream>
using namespace std;
class Acc
{
private: //内部调用
std::string name {"acc"};
double balance {0.0};
public: //外部调用
// 构造函数 初始化
// 重载 C++自行根据输入参数不同,进入不同的函数
Acc(){
cout << "无参数的" << endl;
};
Acc(std::string name){
cout << "字符串的" << endl;
};
Acc(double balance){
cout << "浮点数的" << endl;
};
Acc(std::string name, double balance){
cout << "字符串 + 浮点数" << endl;
};
// 析构函数 只有一个
// 对象销毁时自动调用,不可重载,一般用于释放资源
~Acc(){
cout << "析构函数触发" << endl;
};
};
int main()
{
{
Acc a1;
Acc a2("a2");
Acc a3(100.0);
Acc a4("a4", 10.0);
}
// 调用 析构函数 根据上面四次运行,析构函数会按照"堆"
// 后入先出的模式下,进行四次调用
Acc *all = new Acc("all", 1.0); //申请内存 指针
delete all; //释放内存
return 0;
}
演示:构造函数的三种写法
#include <iostream>
using namespace std;
class Acc
{
private: //内部调用
std::string name {"acc"};
double balance {0.0};
public: //外部调用
// 构造函数 初始化
// 重载 C++自行根据输入参数不同,进入不同的函数
Acc(){
// 方法一 参数初始化 直接等于来初始
name = name;
balance = balance;
cout << "无参数的" << name << " " << balance << endl;
};
Acc(std::string name){
// 方法二 参数初始化 用箭头来初始
this->name = name;
cout << "字符串的" << name << endl;
};
Acc(double balance)
// 方法三 参数初始化 初始化列表 注意:这里是在{}前面的
:balance{balance}
{
cout << "浮点数的" << " " << balance << endl;
};
Acc(std::string name, double balance)
// 方法三 参数初始化 初始化列表 注意:这里是在{}前面的
:name{name}, balance{balance}
{
cout << "字符串 + 浮点数" << name << " " << balance << endl;
};
// 析构函数 只有一个
// 对象销毁时自动调用,不可重载,一般用于释放资源 (演示:非必要)
~Acc(){
cout << "析构函数触发" << endl;
};
};
int main()
{
{
Acc a1;
Acc a2("a2");
Acc a3(100.0);
Acc a4("a4", 10.0);
}
// 调用 析构函数 根据上面四次运行,析构函数会按照"堆"
// 后入先出的模式下,进行四次调用
Acc *all = new Acc("all", 1.0); //申请内存 指针
delete all; //释放内存
return 0;
}
演示:代理构造函数
代理构造函数的目的是简化重载的重复代码
#include <iostream>
using namespace std;
class Acc
{
private: //内部调用
std::string name {"acc"};
double balance {0.0};
public: //外部调用
// 构造函数 初始化
// 重载 C++自行根据输入参数不同,进入不同的函数
Acc()
// 代理构造函数
:Acc {" 无参数 ", 0}
{
cout << "无参数的" << name << " " << balance << endl;
};
Acc(std::string name)
// 代理构造函数
:Acc {" 字符串 ", 1}
{
cout << "字符串的" << name << endl;
};
Acc(double balance)
// 代理构造函数
:Acc {" 浮点数 ", 2}
{
cout << "浮点数的" << " " << balance << endl;
};
Acc(std::string name, double balance)
// 方法三 参数初始化 初始化列表 注意:这里是在{}前面的
:name{name}, balance{balance}
{
cout << "字符串+浮点数" << name << " " << balance << endl;
};
// 析构函数 只有一个
// 对象销毁时自动调用,不可重载,一般用于释放资源 (演示:非必要)
~Acc(){
cout << "析构函数触发" << endl;
};
};
int main()
{
{
Acc a1;
Acc a2("a2");
Acc a3(100.0);
Acc a4("a4", 10.0);
}
// 调用 析构函数 根据上面四次运行,析构函数会按照"堆"
// 后入先出的模式下,进行四次调用
Acc *all = new Acc("all", 1.0); //申请内存 指针
delete all; //释放内存
return 0;
}