1. 面向对象编程(OOP)特性:
抽象、封装和数据隐藏、多态、继承、代码的可重用性
2. 类(类型)
目的: 数据隐藏
指定类型需要的三项工作:
a. 决定数据对象需要的内存数量
b. 决定如何解释内存中的位
c. 决定可使用数据对象执行的操作或方法
3. 类声明
关键字 class
格式
class className
{
private: ---> 私有成员(只能通过共有成员(或友元)函数来访问)
private data member declarations
private member function prototypes
public: ---> 共有部分
public data member declarations
public member function prototypes
};
创建对象: ClassName A,B;
注: private 、 public 里都可以放数据成员和函数成员
但私有成员,只能通过共有成员函数来访问或使用
其中[private]可以缺省,默认访问类型是 private
C++对结构进行了扩展,默认访问类型是 public
4. 类方法(类的成员函数)
a. 定义成员函数时,使用作用域解析运算符 :: 来标识函数所属类
b. 类方法可以访问类的 private 组件
例如 : void Stock::update (double price)
只要类不同,函数名可以同名
例如 : void John::update (double price)
定义类方法内无需加成员限定
定义于类内部的函数将自动成为内联函数,外部定义的可以加 inline 关键字
类方法使用
例如:
Stock PQR;
PQR.fun();
注: 使用类成员时用成员访问符 .
5. 类的构造函数
构造函数名 为类名
类构造函数:用于构造新的对象、将值赋给它们的数据成员
特点:不加返回类型,可以默认参数,参数名不能同成员名相同
当程序声明对象时,会自动调用构造函数
例如:
定义
Stock::Stock(const string &co,long n,double pr)
{
...
}
使用(声明变量)
显式 : Stock garment = Stock("Furry Mason",50,2.5);
隐式 : Stock garment("Furry Mason",50,2.5);
动态分配方法
Stock *pstock = new Stock("Electroshock Games",18,19.0);
6. 默认构造函数
如果定义了类的构造函数,那么一定要定义默认构造函数
方法:
a. 在原有的构造函数上给所有的参数提供默认值(默认参数)
b. 利用函数重载定义另一个函数--------一个没有参数的函数
例如:Stock();
Stock::Stock()
{
...
}
7. 析构函数
析构函数名 为类名前加 ~
是针对构造函数的没,如果构造函数使用 new 来分配内存,那么析构函数
使用 delete 来释放内存
对于一般情况,编译器会自动生成隐式的析构函数
析构函数调用时间根据对象的创建方式不同而相异
8. C++11 列表初始化
需要与构造函数参数列表匹配
例如:
Stock A = {"ABCD",100,121.0} //如果部分默认参数则可缺省, = 可缺省
Stock B = {} //对应予默认构造函数
9. 用 const 关键字确保函数不会修改调用对象
例如:
声明: void show() const;
定义:
void stock::show() const
{
...
}
10. this 指针
对于涉及到另一个对象的函数,如果要返回本身这个对象,那么返回 return *this;
11. 对象数组
声明方法与创建数组相似
例如: Stock mystuff[4];
显示初始化,调用构造函数
例如:
Stocks stocks[4] =
{
Stock("A",1,2);
Stock("B",1,2);
Stock("C",1,2);
Stock("D",1,2);
}
如果没有被显式初始化,那么每个数组元素都会执行隐式构造函数
12. 类作用域(C++ P笔记)
C++ PP Chapter X 对象和类
最新推荐文章于 2024-10-28 16:03:32 发布