类与对象

一、C++中的类

C++中的类,将数据和操纵数据的方法组合成一个整洁的包。

类规范包括两个部分组成:

类声明:以数据成员方式描述数据部分,以成员函数(方法)的方式描述公有接口。

类方法定义:描述如何实现类成员函数

通常,程序员将接口(类定义)放在头文件中,并将实现放在源代码中。

内联函数

定义位于类声明中的函数都将自动成为内联函数、

也可以在类声明之外定义成员函数,并使之成为内联函数。

为此,只需在类实现部分中定义函数时使用inline限定符即可。

 

#include<iostram>
using namespace std;
class Stock
{
    private:
        void set_tot();
    
}
iniline void Stock::set_tot()
{
    
}

内存分配

每个对象都有自己的存储空间,用于存储其内部的变量和类成员;

但同一个类的所有对象共享同一类方法,即类方法只有一个副本。

构造函数

每次创建类对象(甚至使用new动态分贝内存)时,C++都使用类构造函数。

如:Stock *pstock=new Stock("Furry",20);

这条语句创建一个Stock类对象,将其初始化为参数提供的值,并将该对象地址赋值给pstock指针

这种情况下,对象没有名称,但可以用指针来管理对象。

析构函数

用构造函数创建对象后,程序负责跟踪该对象,直到其过期为止。

对象过期时,程序将自动调用析构函数。

何时释放析构函数?

如果创建的是静态存储对象,其析构函数将在程序结束时被自动调用

如果创建的是自动存储类对象,则其析构函数将在程序执行完代码块时自动被调用。

如果对象是通过New创建的,则他将驻留在栈内存或自用存储区中,直到使用delete释放

this指针

每个成员函数(包括构造和析构)都有一个this指针。this指针指向调用对象。

如果方法要引用整个调用对象,可以使用表达式*this。

在函数的括号后面使用const限定符将this限定为const,这样将不能使用this来修改对象的值。

对象数组

对象数组的声明方法与标准类型的声明方法相同。

Stock mystff[4];

当程序创建未被显式初始化的类对象时,总是调用默认构造函数。

可以用构造函数来初始化数组,在这种情况下,必须为每个元素调用构造函数。

如果类包含多个构造函数,则可以对不同的元素使用不同的构造函数。

初始化对象数组的方案是:

首先使用默认构造函数创建数组元素,然后花括号中的构造函数将创建临时对象,

然后将临时对象的内容复制到相应的元素中。

因此,要创建类对象数组,则这个类必须有默认构造函数。

类作用域

在类中定义的名称(数据成员名和类成员函数名)的作用域都为整个类,只在该类中是已知,类外不可知。

抽象数据类型

运算符重载限制

1.重载后的运算符必须至少有一个操作数是用户定义的类型,防止用户为标准类型重载运算符。

2.使用运算符时不能违反运算符原来的句法规则。

3.不能创建新运算符。

4.不能重载下面的运算符

  (sizeof),( . ),(.*),(?:),(typeid),(const_cast),(dyanmic_csast),(reinterpret_cast),(staci_cast)

5.大多数运算符都可以通过成员或非成员函数进行重载,但下面的运算符只能通过成员函数进行重载。

 =:赋值运算符

 ():函数调用元素安抚

 []:下标运算符

 ->:通过指针访问类成员的运算符

 

 

 

原文地址:https://www.cnblogs.com/zuoyou151/p/10844609.html