| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++学习第十一课--inline、const、mutable、this和static笔记 -> 正文阅读 |
|
[C++知识库]C++学习第十一课--inline、const、mutable、this和static笔记 |
一、在类定义中实现成员函数inline在.h头文件中声明类,如下:
在.cpp文件中定义类,如下:
在main函数或者其它函数调用student成员的stuInitFunc函数如下:
以上的写法是我们平时的写法,如果我们把函数的整个定义都写在.h头文件中,整个程序如下所示,.h头文件的声明如下:
在.cpp文件中调用类的成员函数如下所示:
在类的声明中,这种直接把成员函数定义写在类声明里面,会被当成inline内联函数来处理。 二、成员函数末尾的const这里再介绍一种const的常用用法,就是在成员函数的末尾增加一个const。对于成员函数的声明和定义代码分开的情况下,不仅要在成员函数的声明中增加const,也要在成员函数的定义中增加const。这样做的作用是告诉系统,在这个成员函数中不能修改该对象里面的任何成员变量值。 我们在成员函数声明后面加上const,如下: void?stuInitFunc(int?stuAge, int?stuHight, int?stuNum) ?const; 成员函数定义时,在参数圆括号后面加上const,如下:
编译后,语法出现错误,报错信息如下所示: ?三、mutablemutable,翻译成中文,表示不稳定的、容易改变的意思。与 const 正好是反义词。而且 mutable的引入也正是为了突破const 目的限制。 在成员函数末尾加const,是不允许修改成员变量值的。那在设计类成员变量的时候,如果确实遇到了需要在const结尾的成员函数中希望修改成员变量的需求,怎么办?有人提出,把成员函数的末尾的const去掉,变成一个不以const结尾的成员函数。那这个时候可能面临一个问题:如果这个成员函数从const变成非const了,那么就不能被const对象调用了。所以,引入mutable修饰符(关键字)来修饰一个成员变量。一个成员变量一旦被mutable所修饰,就表示这个成员变量永远处于可修改状态,即使是在以const结尾的成员函数中。 我们在上面的例子类声明过程中,在声明成员变量前面加上mutable关键字,在成员函数就可以修改成员变量的值,修改如下:
再次编译程序,不会报错。 四、返回自身对象的引用--thisthis用在成员函数中是一个隐藏起来的函数参数,表示的是指向本对象的指针,那么*tthis表示改指针指向的对象也就是本对象。换句话说,*this表示调用这个成员函数的那个对象。 如下在类student的成员函数中,三种写法都是正确的: 方式一:没有this,推荐使用这种方式
方式二:指向本类对象的指针,类似于student stu; student *this = &stu;
方式三:表示调用这个成员函数的那个类对象
以上三种方式都是等价的,没有什么区别。 在使用this时,需要注意: (1)this本身是一个指针常量,总是指向这个对象本身,不可以让this再指向其它地方。 (2)this指针只能在类成员函数中使用,全局函数、静态函数等都不能使用this指针。 (3)在const成员函数中,this指针是指向const对象的const指针。例如,类类型为student,那么this就是const student *const类型。 (4)当形参名与成员变量名相同时,用this.成员变量名来和形参变量区分开,如下所示:
(5)当一个成员函数需要返回一个类对象变量时,可以用return (*this);把这个类对象返回给类对象本身。如下所示:
调用方式如下:
五、static成员在C中static有两个作用,这里看看static在C++中有什么作用。 1、static修饰成员变量 在.h头文件中,静态成员变量在类中这样声明:
声明以后,在.cpp文件中,不要把成员变量定义在类的成员函数中,而是定义在.cpp文件的开头,这样能够保证在调用任何函数之前这个静态成员变量已经被初始化,从而保证这个静态成员变量能够被正常使用,如下定义:
我们在mian.cpp文件中创建两个student类的新对象stu1和stu2,然后stu1和stu2都调用且打印age、hight和num这三个成员变量的值,再用stu1去修改static修饰的这三个成员变量,再用stu1和stu2调用这三个成员变量且打印这个成员变量的值,可以看到两个类对象的这个成员变量的值是一样的:
2、static修饰成员函数 在声明类对象和声明成员函数时,在成员函数前面加static,如下所示:
?在.cpp中定义成员函数,在成员函数前面就不需要加static修饰符,static修饰的成员函数和普通成员函数的定义方式是一样的,如下:
用staitic修饰成员函数后,可以用 ”类名::静态成员函数名” 或 “类对象.静态成员函数名” 来调用静态成员函数。如下所示:
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 15:36:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |