double Sales_data::avg_price() const{
}
::
作用域运算符,用来说明该函数被声明在类Sales_data里
- 定义在类内部的函数是隐式的inline函数
什么是inline函数?
<6.5.2内联函数和constexpr函数>
内联函数在类内定义成员函数(隐式的),在类外定义成员函数必须加inline才能为内联函数(不默认)
class temp{
public:
int amount;
//构造函数
temp(int amount){
this->amount = amount;
}
//普通成员函数,在类内声明时前面可以不加inline
void print_amount()
}
//在类外定义函数体,必须在前面加上inline关键字才能为内联
inline void temp:: print_amount(){
cout << amount << endl;
}
- 内联函数一般用在函数规模小,函数调用开销可能相当于甚至超过执行函数本身的时间.
参考博客
https://www.cnblogs.com/chenwx-jay/p/inline_cpp.html
常量成员函数
std::string isbn() const{return boolkNo;}
默认情况下,this是一个隐性的指向类类型非常量版本的常量指针.T *const this.故不能指向常量的.
C++的做法是吧const放在成员函数的后边,成为常量成员函数.
常量成员函数不能修改类的数据成员
- 一般来说,如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内。
<7.1.4 构造函数>
- 对象被创建时,执行构造函数.
- 创建一个const类对象时,知道构造函数完成舒适化过程,对象才真正取得"常量属性",构造函数在const对象的构造过程中可以向其写值
Sales_data(const std::string &s):bookNo(s),units_sold(0),revenue(0){ }
通过 : 完成构造函数初始值列表的创建
<7.2 访问控制与封装>
访问说明符
public
private
使用友元允许其他类或函数访问它的非公有成员.
可以是类的友元,也可以是成员函数的友元
class 与 struct关键字定义类的唯一区别
struct:
定义在第一个访问说明符前的成员是public的
class
定义在第一个访问说明符前的成员是private的
封装的优点
- 确保用户代码不会无意间破坏封装对象的状态。
- 被封装的类的具体实现细节可以随时改变,而无须调整用户级别的代码。
网友评论