c++学习笔记(初学)

第 10 章  对象和类

一、抽象和类

注意事项及一些要点技巧:
1,使用#ifndef来访问多次包含同一个文件,防止头文件被重复引用。(“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。比如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include "a.h" 和#include "c.h"此时就会造成c.h重复引用。)
格式如下:
#ifndef XX_H
#define XX_H
...
#endif
2,使用类对象的程序都可以直接访问公有部分,但只能通过公有成员函数(或友元函数)来访问对象的私有成员。private是类对象的默认访问控制,因此不必在声明中使用。
3,在类声明中定义方法等同于用原型替换方法定义,然后在类声明的后面将定义该写为内联函数。
4,修改实现:
如果要使数字格式保持一致,ostream类包含可用于控制格式的成员函数。
std::cout.setf(std::ios_base::fixed,std::ios_base::floatfield)
即设置了cout对象的一个标记,命令cout使用定点表示法。

二、类的析构函数和构造函数

程序不能直接访问数据成员,而必须通过成员函数访问,才能成功地将对象初始化。一般来说,最好是在创建对象时对它进行初始化。

1、类构造函数
专门用于构造新对象,将值赋给它们的数据成员。程序声明对象时,将自动调用构造函数。
构造函数与new创建对象的方法(stock为一个类):
Stock *pstock = new Stock("qwe",18,19.0);
总而言之,构造函数被用来创建对象,而不能通过对象来调用。

2、默认构造函数
当且仅当没有定义任何构造函数时,编译器才会提供默认构造函数。所以,为类定义了构造函数后,我们就必须为它提供默认构造函数。
定义方式:
① 给已有构造函数的所有参数提供默认值。
② 通过函数重载定义另一个没有参数的构造函数
创建默认构造函数后,便可以声明对象变量,而不对它们进行显示初始化。

3,析构函数
析构函数完成清理工作。如果构造函数使用new来分配内存,则析构函数必须使用delete来释放这些内存。

4,const成员函数
只要类方法不修改调用对象,就应该将其声明为const。
例如,我们创建了一个Stock对象:const Stock land = Stock("qwew");要使其调用show()函数,则函数声明应为:void show() const;函数定义的开头也应该为:void Stock::show() const。

三、this指针

1,使用方法
① 在类的非静态成员函数中返回类对象本身的时候,使用return *this。
② 当参数与成员变量名相同时,如this->n = n。
2,特点
① 只能在成员函数中使用。
② 在成员函数的开始前构造,在成员函数的结束后清除。
了解了this指针,在实现成员函数例如void Stock::show() const时,我们即可写做 void show(const Stock *this),其中的数据成员用this->name代替。前端调用如top.show()则可以转换为show(&top),这样,将调用的地址赋给了this指针。

四、对象数组

初始化对象数组的方法:
首先使用默认构造函数创建数组元素,然后花括号中的构造函数将创建临时对象,然后将临时对象的值复制到相应的元素中。

五、类作用域

在类中定义的名称的作用域为整个类,而该名称只在该类中是已知的,因此,可以在不同类中使用相同的类成员名而不会引起冲突。

创建作用域为类的常量的方法:
① 在类中声明一个枚举:
class Bakery{
private:
   enum{months = 12};
   double costs[months];
   …
② 使用关键字static:
class Bakery
{
private:
   static const int months = 12;
   double costs[months];
   …

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mypollyanna

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值