概述
第七章 类
7.1 定义抽象数据类型
成员函数定义和声明的方式和普通函数差不多,但是成员函数的声明必须在类的内部,定义既可以在类的内部也可以在类的外部
非成员函数作为接口存在,定义和声明都在类的外部
例如,Sales_data
类的部分定义如下
struct Sales_data {
std::string isbn() const { return bookNo; }
Sales_data& combine(const Sales_data&);
double avg_price() const;
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
Sales_data add(const Sales_data&, const Sales_data&);
std::ostream &print(std::ostream&, const Sales_data&);
std::istream &read(std::istream&, Sales_data&);
定义在类内部的函数是隐式的
inline
函数
引入 this
成员函数通过一个名为this
的额外的隐式参数来访问调用它的那个对象
std::string isbn() const{ return this->bookNo; }
引入 const
成员函数
isbn
函数的另一个关键之处是紧随参数列表之后的 const
关键字,这里,const
的作用是修改隐式 this
指针的类型。
紧跟在参数列表后面的 const
表示 this
是一个指向常量的指针,像这样使用 const
的成员函数被称为常量成员函数 (const member function)
因为 this
是指向常量的指针,所以常量成员函数不能改变它的对象的内容
常量对象,以及常量对象的引用或指针都只能调用常量成员函数
类作用域和成员函数
值得注意的是,即使 bookNo
定义在 isbn
之后,isbn
也还是能够使用 bookNo
编译器分两步处理类:首先编译成员的声明,然后才轮到成员函数体,因此,成员函数体可以随意使用类中的其他成员而无须在意这些成员出现的次序。
在类的外部定义成员函数
- 在类的外部定义成员函数是,成员函数的定义必须与它的声明匹配,即返回类型、参数列表和函数名都得与类内部的声明保持一致
- 成员被声明成常量成员函数,定义也必须在参数列表后明确指定
const
属性 - 类外部定义的成员的名字必须包含它所属的类名
double Sales_data::avg_price() const {
if (units_sold)
return revenue/units_sold;
else
return 0;
}
最后
以上就是俊秀柠檬为你收集整理的C++ Primer 练习笔记-第七章 类第七章 类的全部内容,希望文章能够帮你解决C++ Primer 练习笔记-第七章 类第七章 类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复