C++编程入门知识(三)

本文深入探讨了C++编程中的核心概念,包括拷贝构造函数的作用和使用场景,深拷贝与浅拷贝的区别,析构函数的自动调用及其在内存管理中的角色,以及this指针在成员函数中的应用。同时,介绍了常指针的不同类型以及常对象和普通对象的特性。此外,还概述了函数模板和类模板的使用,强调它们在代码复用和泛型编程中的价值。
摘要由CSDN通过智能技术生成

✳21.拷贝构造函数

        ①定义格式:类名(const 类名 & 变量名)

        ②如果没有自定义的拷贝构造函数则系统自动生成一个默认的拷贝构造函数。

        ③当采用直接初始化或复制初始化实例化对象时系统自动调用拷贝构造函数。

✳22.深拷贝与浅拷贝

        ①浅拷贝只是将数据成员的值进行了拷贝

        ②深拷贝不是简单的值拷贝,而是将指针成员指向的内存数据也进行拷贝。

        ③当数据成员中含有指针时,浅拷贝会使两个对象的成员指针指向相同的内存地址。

✳23.析构函数

        ①定义格式:~类名()

        ②如果没有自定义的析构函数,则系统自动生成

        ③析构函数在对象销毁时,自动调用

        ④析构函数没有返回值,没有参数也不能重载

        ⑤通过一个析构函数调用虚函数时,C++系统对该调用采用静态联编

✳24.this指针

        ①this 指针无需用户定义,是编译器自动产生的。

        ②在成员函数的参数或临时变量与数据通信成员同名时,可以使用 this 指针区 分同名的数据成员。

        ③this 指针也是指针类型,所以在 32 位编译器下也占用 4 个基本的内存单元, 即 sizeof(this)的结果为 4。

        ④对象各自的this指针指向各自对象的首地址,所以不同对象的this指针一定指向不同的内存地址。

        ⑤静态成员函数没有this指针。

25.两种常指针解析

        ①指向对象的常指针

        指向对象的常指针变量的值不能被改变,即始终指向同一个对象,但可以改变其所指向对象中的数据成员(非const型)的值。一般形式为:

        类名 * const  指针变量 = 对象地址;

Time t1(10,12,15),t2;
Time * const ptr1 = &t1;
ptr1 = &t2;  //

        ②指向常对象的指针

        如果声明一个对象为常对象,则只能用指向常对象的指针指向它,而不能用一般的(非const型的)指针变量指向它。一般形式为:

        const 类名 * 指针 = 对象地址;

const int a;   //定义常变量a
const int *p = &a;    //定义指向常变量的指针

26.常对象与普通对象

        ①常对象只能调用常成员函数,不能调用普通成员函数。

        ②普通对象能够调用常成员函数,也能够调用普通成员函数。

        ③常指针和常引用都只能调用对象的常成员函数。

        ④一个对象可以有多个对象常引用。

27.函数模板

        提要:

        例:int max(int a,int b){return (a>b)?a:b;}

        float max(float a,float b){return (a>b)?a:b;}

        ①函数模板的参数个数可以是一个也可以是多个。

        ②使用函数模板时,需要指定模板参数,此时的函数称为模板函数。

        ③当需要定义多个功能相同,数据类型不同的函数时,可以使用函数模板来定义。(比如例子)

        ④函数模板参数不可以为0,如果为0,则没有必要引入函数模板。

        ⑤关键字:template、typename、class。

28.类模板

        ①定义一个类模板就相当于定义了一系列功能相同类型不同的类。

        ②定义类模板需要使用关键字 template。

        ③模板参数既可以是类型,也可以是变量。

        ④定义类模板的参数可以使用 typename 和 class,可以混用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CJBHbc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值