移动 网站 素材,免费建网站知乎,西安做网站xamokj,怎么用flashfxp上传网站文章目录类的构造函数什么是构造函数声明和定义构造函数如何使用构造函数默认构造函数类的析构函数什么是析构函数声明和定义析构函数小练习银行账户执行效果类的构造函数
什么是构造函数 Q#xff1a;什么是类的构造函数 A#xff1a;构造函数是类的一种特殊成员函数,不需…
文章目录类的构造函数什么是构造函数声明和定义构造函数如何使用构造函数默认构造函数类的析构函数什么是析构函数声明和定义析构函数小练习银行账户执行效果类的构造函数
什么是构造函数 Q什么是类的构造函数 A构造函数是类的一种特殊成员函数,不需要人为调用而是在建立对象时自动被执行。简单来说就是在建立对象时构造函数就会自动进行执行。
声明和定义构造函数
class Dog {private://成员变量string name;int age;
};构造函数的名称要和类名称相同。现在创建一个Dog的构造函数由于需要为Dog对象提供 2 个值因此构造函数应该有 2 个参数。具体如下 Dog(const string na, int ag);//ps成员函数设计时加 cons t的好处:1.安全2.通用性好既适用于普通对象也适用于常对象。Dog::Dog(const string na, int ag) {name na;age ag;
}注意通常情况下创建对象有两种情况一种是直接创建类的对象另一种是通过new来创建一个动态对象这两种情况都会自动调用构造函数。
如何使用构造函数
c有两种使用构造函数来初始化对象的方法第一种方法就是显式地调用构造函数。这里将 dog对象的name成员设置成字符串旺财将age成员设置成 10。
Dog dog Dog (旺财,10); //显式地调用构造函数另一种方法就是隐式地调用构造函数。 Dog dog(旺财,10); //隐式地调用构造函数注意因为在构造函数构造出对象之前对象是不存在的所以无法使用对象来调用构造函数。也就是说构造函数被用来创建对象而不能通过对象来调用。
默认构造函数 Q什么是类的默认构造函数 A默认构造函数是在未提供显式初始值时用来创造对象的构造函数。 当使用下面这种声明时就是默认构造函数。执行命令后会创建dog对象但是不会初始化它的成员。 Dog dog; 注意当没有定义任何构造函数时编译器才会提供默认构造函数。如果自己定义了构造函数就必须自己定义默认构造函数否则上面的声明会报错。
定义默认构造函数很简单一般有两种方法第一种方法就是给已有构造函数的所有参数提供默认值。 Dog(const string na no name, int ag 0);第二种方法就是通过函数重载来定义一个没有参数的构造函数
Dog::Dog() {name no name;age 0;
}类的析构函数
什么是析构函数 Q什么是类的析构函数 A析构函数是特殊的类成员函数简单来说析构函数与构造函数的作用正好相反它用来完成对象被删除前的一些清理工作也就是专门的扫尾工作。简单来说就是在类对象被回收销毁时自动调用。
声明和定义析构函数
和构造函数一样析构函数的名称也很特殊需要在类名前加上~Dog类的析构函数就是~Dog()。通常情况下类对象被回收销毁有两种情况一种是超过生命周期之后被自动回收另一种是动态对象通过delete回收这两种情况都会自动调用析构函数。
因为在类对象被回收销毁时析构函数会自动调用所以必须要有一个析构函数。如果没有提供析构函数编辑器会隐形声明一个默认析构函数。
小练习
银行账户
我们定义一个类来表示银行账户。数据成员包括储户姓名账号和存款。成员函数执行以下操作。
创建一个对象并将它初始化。显示储户的姓名账号和存款。存入参数指定的存款。取出参数指定的存款。
#includeiostream
using namespace std;class BankAccount {private :string fullname;string account;double deposit;public :BankAccount();BankAccount(const string, const string, float);~BankAccount();void init_account(const string, const string, float);void print_info() const;void save(float);void withdraw(float);
}; int main() {BankAccount ba(锡兰,0001,1000);ba.print_info();ba.init_account(锡兰_CC,,1500);ba.print_info();ba.save(233.3);ba.print_info();return 0;
}//默认构造函数
BankAccount::BankAccount() {deposit 0;
}//带参数构造函数的定义
BankAccount::BankAccount(string name, string id, float f) {fullname name;account id;deposit f;
}//析构函数
BankAccount::~BankAccount() {cout 结束!!! endl;
} //初始化对象
void BankAccount::init_account(string name, string id, float f) {cout初始化账户信息;if(name ! ) fullname name;if(id ! ) account id;deposit f;
} //输出账号信息
void BankAccount::print_info() const {cout 账号信息 endl;cout 姓名 fullname endl;cout ID: account endl;cout 存款 deposit endl;
} //存款函数
void BankAccount::save(float f) {deposit f;
} //取款函数
void BankAccount::withdraw(float f) {deposit - f;
} 执行效果