c++ primer学习笔记(9)-函数(3)
2011-02-25 19:16 Clingingboy 阅读(371) 评论(0) 编辑 收藏 举报
一.类成员函数
分为声明(接口)和定义(实现),必须在类定义中
如下示例
class Sales_item {
public:
// operations on Sales_item objects
double avg_price() const;
bool same_isbn(const Sales_item &rhs) const
{ return isbn == rhs.isbn; }
// private members as before
private:
std::string isbn;
unsigned units_sold;
double revenue;
};
avg_price为声明未定义,same_isbn是声明和定义
在类外部定义成员函数
double Sales_item::avg_price() const
{
if (units_sold)
return revenue/units_sold;
else
return 0;
}
二.构造函数
1.合成的默认构造函数
如果没有为一个类显式定义任何构造函数,编译器将自动为这个类生成默认构造函数。
2.自定义构造函数
// default constructor needed to initialize members of built-in type
Sales_item(): units_sold(0), revenue(0.0) { }
注意:构造函数的初始化列表,这个比较特殊,构造函数也有执行顺序,先执行初始化列表再执行内部代码
三.重载函数
在类中,构造函数和其他函数都可以重载(名字相同而形参表不同),如下
Record lookup(const Account&); // find by Account
Record lookup(const Phone&); // find by Phone
Record lookup(const Name&); // find by Name
Record r1, r2;
r1 = lookup(acct); // call version that takes an Account
r2 = lookup(phone); // call version that takes a Phone
重载可视作设计问题,也可以借助别名的函数,视情况而定
四.const修饰成员函数
const修饰类的成员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰。
class A
{
…
void function()const; //常成员函数, 它不改变对象的成员变量. 也不能调用类中任何非const成员函数。
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现