面向对象的程序设计之类和对象

本文介绍了C++中的对象初始化列表,强调了其在初始化类成员,特别是const成员和无默认构造函数的类成员时的重要性。同时,讨论了构造函数和析构函数的调用顺序,以及new和delete运算符在动态内存管理中的作用。此外,还涵盖了静态成员变量和函数的特性,以及友元的概念,它们如何影响类的封装性和功能扩展。
摘要由CSDN通过智能技术生成

对象初始化列表

1.申请内存并初始化

2.调用构造函数往内存中填入需要的值

格式:

Constructor::Constructor():m1(v1),m2(v1,v2),m3(v3){ }

一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数没有默认构造函数。这时要对这个类成员进行初始化,就必须调用这个类成员的有参构造函数如果这个类没有提供有参构造函数,那么必须通过初始化列表来初始化。

两个地方需要用到对象初始化列表:

1、类成员被const修饰;

2、类对象作为成员变量,并且这个类没有提供无参的构造函数

成员变量的初始化顺序与声明的顺序相关,与在初始化列表中的顺序无关

初始化列表先于构造函数的函数体执行

当类中有成员变量是其它类的对象时,首先调用成员变量的构造函数

析构函数的调用顺序与对应的构造函数调用顺序相反。

匿名对象

class Test

{

public:

  Test(){cout << “构造函数” << endl;}

  ~Test(){cout << “析构函数” << endl;}

}

int main()

{

  Test();     //匿名对象                 //Test t(1);t.show();不正确-构造中调用构造

}

new/delete(C++中动态地分配和撤销内存空间的运算符,不是函数)

相比于malloc和free执行效率更高

new用法

int *p1=new int;//申请一个整数

int *p2=new int(100);//申请一个整数并初始化

int *p3=new int[10];//申请一个数组

char *p4=new char;//申请一个字符

char *p5=new char[10];//申请字符数组

int (*p6)[4]=new int[3][4];

delete用法

delete p1;//释放

 delete[]p5;//释放数组最好要加中括号

与malloc\free区别

new创建对象会自动调用构造函数delete会自动调用析构函数

而malloc和free不会。

静态成员

关键字static

Static在c语言作用
  1. 修饰局部变量:改变变量生命周期,直到程序运行结束才释放
  2. 修饰全局变量:改变变量的作用域,只能在本文件使用
  3. 修饰函数:改变函数的作用域,只能在本文件使用

静态成员变量一定要在类的外部初始化,可以通过类名直接访问

所有对象共享同一个静态成员变量

静态成员函数只能访问静态成员变量,可以通过类名调用

在C++中

定义常量,放在符号表中,值不能修改

修饰成员变量,需要通过对象初始化例表来赋值

修饰成员函数 只读函数 函数内部只能访问数据 不能修改数据

静态成员函数

静态成员函数数冠以关键字static

静态成员函数提供不依赖于类数据结构的共同操作,它没有this指针

在类外调用静态成员函数用 “类名 :: ”作限定词,或通过对象调用

面向对象模型

C++类对象中的成员变量和成员函数分开存储

成员变量:

普通成员变量:存储于对象中,与struct变量有相同的内存布局和字节对齐方式

静态成员变量:存储于全局数据区

成员函数:存储于代码段中。

把全局函数转化成成员函数,通过this指针隐藏左操作数;

 Test add(Test &t1, Test &t2)===》Test add(Test &t2)

把成员函数转换成全局函数,多了一个参数

 void printAB()===》void printAB(Test *pthis)

const修饰的成员函数称为常成员函数,常成员函数只能访问数据,不能修改数据。

友元(全局函数,非类的内部函数,但可改类的私有属性)

破坏了类的封装性,对数据操作和类之间传递消息起到辅助作用

格式   friend void test(Test *pTest);

总述

类:数据成员和成员函数的封装

对象:类的实例

接口:public成员集

构造函数在创建和初始化对象时自动调用。析构函数则在对象作用域结束时自动调用。

重载构造函数和复制构造函数提供了创建对象的不同初始化方式。

静态成员是局部于类的成员,提供一种同类对象的共享机制

友员用关键字friend声明。友员是对类操作的一种辅助手段。一个类的友员可以访问该类各种性质的成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值