c++笔记 | 类和对象(二)

c++笔记 | 类和对象(二),第1张

一.对象指针和对象引用 1.1 指向类的成员指针

指向成员的指针只能访问公有成员

  • 声明指向公有数据成员的指针 : 类型说明符  类名::*指针名  
  • 说明指针指向哪个成员  : 指针名 = & 类名::数据成员名

        eg:int  A::*pc=&A::c;  定义了一个类型为int型的指向A中数据c的指针

  • 通过对象名(或对象指针)与成员指针结合来访问数据成员 : 对象名.*类成员指针名; 对象指针名->*类成员指针名

        eg:A a; a.*pc=8;    A *p;p->*pc=8; 

  • 声明指向公有成员函数的指针 : 类型说明符 (类名::*指针名)(参数表)
  • 初始化: 指针名=类名::函数成员名

        eg:int (A::*pfun)(int)=A::fun; 定义了一个int类型指向A中函数fun的指针,fun的参数为一 个int型。


  • 通过对象名(或对象指针)与成员指针结合来访问函数成员:(对象名.*类成员指针名)(参数表)  (对象指针名->*类成员指针名)(参数表)

        eg:A a;a.*pfun(9);  A *p; p->*pfun(9);

1.2 对象指针和对象引用作函数参数
  • 对象指针作为函数参数

实现传址调用

使用对象指针作为形参仅将对象的地址值传给形参,提高运行效率。


  • 对象引用作函数参数

实现传址调用

比指针更简单、更直接

1.3 this指针
  • 隐含于每一个类的成员函数中的特殊指针。


  • 明确地指出了成员函数当前所 *** 作的数据所属的对象。


  • 当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行 *** 作时,就隐含使用了this指针。


二.对象数组和对象指针数组 2.1对象数组

相同类的若干个对象的集合构成一个对象数组

  • 声明:类名 数组名[元素个数]
  • 访问方法:通过下标访问 数组名[下标].成员名

对象数组初始化

数组中每一个元素对象被创建时,系统都会调用类构造函数初始化改对象

通过初始化列表赋值:eg: Point A[2]={Point(1,2),Point(3,4)}

如果没有为数组元素指定显示初始值,数组元素便使用默认值初始化(调用默认构造函数)

2.2 指向数组的指针和指针数组

2.2.1 指向数组的指针

指向数组的指针可以指向一维对象数组,也可以指向二维数组

指向一维数组的一级指针声明: 类名 (*指针名)[大小]

eg: A aa[2][3];

        A(*paa)[3]=aa;  

        定义了一个数组指针,指向aa,长度为3。


#include 
using namespace std;
     class A
     {
       public:
         A(int i,int j) //成员函数
         {  x=i;y=j;  }
         A()  //函数重载
         {  x=y=0;  }
         void Print()
         {  cout<

2.2.2 指针数组

指针数组是指数组的元素是指向对象的指针,要求所有数组元素都是指向相同类的对象的指针。


声明: 类名 *对象指针数组名[大小]; 对象指针数组可以被初始化也可以被赋值

eg: A *arry1[4]={&a4,&a3,&a2,&a1};

#include 
using namespace std;
class A
{
public:
A(int i=0,int j=0)
{  x=i;y=j;  }

void Print()
{  cout<Print(); //使用指针数组访问对象中的成员函数
         cout<Print();
         return 0;
     }
三.常类型 3.1 常对象

const 类名 对象名(初值);

类名 const 对象名 (初值);

3.2 常指针和常引用

3.2.1 常指针——地址为常量的指针  :类型 *const 指针名=初值

int a=0;

eg:int *const p1=&a;

        指向的值为常量的指针: const 类型 *指针名= 常量;

eg:const int *p2=&a;

3.2.2 常引用 :const 类型 &引用名 =初值;

eg:const int &c =a;

3.3常数据成员

格式:const 类型 常数据成员名

常数据成员的值不能改变

3.4 常成员函数

类型 成员函数名 (参数表) const

{函数体}

常成员函数可以引用const数据成员,也可以引用非const数据成员,非const数据成员在常成员函数中可以引用,但不可改变。


常对象的数据成员都是常数据成员,其值不能变。


常对象只能调用常成员函数。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/563173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)