当前位置: 首页 > news >正文

宁波品牌网站制作哪家好腾讯企业邮箱登录入口二维码

宁波品牌网站制作哪家好,腾讯企业邮箱登录入口二维码,常熟建设局网站,seo经典案例分析文章目录类的构造函数什么是构造函数声明和定义构造函数如何使用构造函数默认构造函数类的析构函数什么是析构函数声明和定义析构函数小练习银行账户执行效果类的构造函数 什么是构造函数 Q:什么是类的构造函数 A:构造函数是类的一种特殊成员函数,不需…

文章目录

  • 类的构造函数
    • 什么是构造函数
    • 声明和定义构造函数
    • 如何使用构造函数
    • 默认构造函数
  • 类的析构函数
    • 什么是析构函数
    • 声明和定义析构函数
  • 小练习
    • 银行账户
    • 执行效果

类的构造函数

什么是构造函数

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回收,这两种情况都会自动调用析构函数。

因为在类对象被回收,销毁时析构函数会自动调用,所以必须要有一个析构函数。如果没有提供析构函数,编辑器会隐形声明一个默认析构函数。

小练习

银行账户

我们定义一个类来表示银行账户。数据成员包括储户姓名,账号和存款。成员函数执行以下操作。

  • 创建一个对象并将它初始化。
  • 显示储户的姓名,账号和存款。
  • 存入参数指定的存款。
  • 取出参数指定的存款。
#include<iostream>
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;
} 

执行效果

在这里插入图片描述

http://www.yayakq.cn/news/922442/

相关文章:

  • 音乐网站开发文档撰写模板嘉兴小程序开发公司
  • 网站建设外包 源代码网站之家查询
  • 邯郸网站建设费用中学生旅游网站开发的论文怎么写
  • 大力推进网站集约化建设wordpress模块化主题
  • 免费的游戏网站建设安全的网站制作公司
  • 网站收录提交接口wordpress标签数据库
  • 好的网站建设重庆航运建设发展有限公司网站
  • 加强公司窗口网站建设镇江市机关效能与作风建设网站
  • 建设一个网站论坛要多少钱襄城县做网站的
  • 湖北专业网站建设产品介绍白熊阅读做网站架构
  • 网站设计方案模板商城网站建设视频教程
  • 职业生涯规划大赛成长赛道网站关键词优化软件
  • 如何查询网站域名备案信息免费的网站推广
  • 排名前十的网站上海市嘉定建设局网站
  • 做字体网站东莞常平中学录取分数线2022
  • 扁平化网站建设公司合肥网站建设王道下拉??
  • 快站建站做网站要营业执照吗
  • 网站建设+临沂质量好网站建设价格
  • 西宁做网站君博领先广告vi设计是什么
  • 做代练去什么网站安全吗sem培训班培训多少钱
  • 在线响应式网站ps做图哪个网站好
  • 网站开发自学流程网络营销有用吗
  • 织梦批量修改网站源代码武威 网站建设
  • 哈尔滨网站设计报价成都装修网站制作价格
  • 腾讯云建设网站视频福安seo
  • 做网站需要买什么wordpress设置ip
  • 微信支付 网站开发建设工程合同法全文
  • 网络网站知识app做爰午夜福利全过程视频网站
  • 网站seo诊断技巧wordpress怎么修改密码
  • 网站的产品中心怎么做学python去哪个培训机构好