C++_类的常量成员_c++类的常量成员-程序员宅基地

技术标签: C/C++  类的常量成员  

一、关于C++的四个强转

  • 格式:类型(变量、表达式、值)
  • (C语言的强转方式C++适用,但是C++的强转C语言不适用)

1.static_cast

  • 格式:static_cast<类型1>(值);

说明:

  • 值将会转换成类型1的类型

  • static_cast不做任何检查

2.const_cast

  • 格式:const_cast<类型2>(值);

说明:

  • const_cast会把变量的const去掉

3.reinterpret_cast

  • 格式:reinterpret_cast<类型3>(值);

说明:

  • 把整数变成地址 huo 把地址变成整数

4.dynamic_cast

  • 格式:子类名=dynamic_cast<类型4> (new 父类名);

说明:

  • 检查多态中父类和子类指针的应用是否安全,如果不安全则将返回值赋为空

二、类中成员变量和成员函数的访问方式

静态编译:

  • 编译之前确认将要调用的函数
  • 调用速度较快

(就是一般意义上使用函数名和函数参数调用函数的过程)

动态编译:

  • 在运行过程中确定调用的函数

  • 根据虚表找到函数调用,比较灵活

(由于存在多个函数重名的情况,所以需要根据具体情况判断使用哪个函数的过程)

三、智能指针

  • 作用:自动释放堆内存
  • 头文件:memory
  • 关键字:auto_ptr
  • 格式:auto_ptr<类名5> point(new 类名5);

说明:

  • 可以选择性的使用智能指针,帮忙管理内存

  • 智能指针只能用来管理一个对象

四、关于类中的const和static成员

const:

  • const修饰的成员变量必须在成员列表中赋初值
  • const修饰的成员函数不能改变其使用的成岩变量的值
  • const修饰的成员参数,一般与引用搭配,无法修改成员参数的值

static:

  • static修饰的成员变量是类的公有成员,必须在类外进行初始化操作

  • static修饰的成员函数?????

五、代码实例

#include<iostream>
#include"father.h"
#include<memory>
using namespace std;
int main()
{
    
 //stati_cast关键字
 cout << static_cast<int>(3.14) << endl;
 //const_cast关键字
 const int x = 10;
 int *p = const_cast<int*>(&x);
 //reinterpret_cast关键字
 const int x1 = 10;
 int y = reinterpret_cast<int>(&x);
 //dynamic_cast关键字-检查多态中父类和子类指针的应用是否安全
 son* p2 = dynamic_cast<son*> (new father);//如此给子类申请父类的内存会存在越界风险
 //智能指针
 {
    
  auto_ptr<father> point(new father);
 }
 cin.get();
 return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41743247/article/details/90673166

智能推荐

关于各类Python安装软件之间的关系(Python, Anaconda, Jupyter notebook和Pycharm)_jupyter,pycharm和python的关系-程序员宅基地

文章浏览阅读1k次。关于各类Python安装软件之间的关系(Python, Anaconda, Jupyter notebook和Pycharm)Python这里说的Python,就是最原生的Python,是我们学习Python所需要的最基本的环境。就像学习Java需要安装JDK一样。Python可以到Python官网(https://www.python.org/downloads/)下载对应版本,使用“下一步”进行安装,然后配置环境变量;接着就可以计事本里编写python代码程序,并到终端编译运行。上述过程与初学_jupyter,pycharm和python的关系

rhas3.0 + qmail + mysql + smtp + vpopmail + igenus + qmailadmin-程序员宅基地

文章浏览阅读4.5k次。一、安装说明。 为了方便安装我在安装Redhat3.0时选了apache、php、mysql,注意mysql-devel开发包一定要装上, 二、安装ucspi-tcp-0.88 1.这是由于redhat3.0(包括redhat 9.0)的glibc的版本有问题,必须有下列软件及补丁才能编译 http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gzhttp://

序列的趋势存在性检验:Cox-Stuart test和Mann-Kendall test-程序员宅基地

文章浏览阅读7.2k次,点赞3次,收藏43次。我们经常听这样的描述,数据呈现上升/下降/无明显趋势,这个结论大都是靠人眼观察出来的,往往不够严谨。我们需要更科学的方法,下面就借助非参里的符号检验,来谈谈检验趋势存在性的两种常用方法。Cox-Stuart趋势检验原理对于数据序列x1,x2,x3,……,xn,我们以位置中间数c为界把该序列分成两部分,并两两配对成(x1,xc+1),(x2,xc+2),……(xc,xn)的形式。接着我们以每一组中后一个数减去前一个数并记下正负性,s+表示得到正数的个数,s-表示得到负数的个数。如果s+远远大于s

66666-程序员宅基地

文章浏览阅读62次。

Java垃圾回收精粹——Part2-程序员宅基地

文章浏览阅读701次。在第2部分里介绍了Hotspot中的堆结构、对象分配以及次要回收。Hotspot中的堆结构理解不同的收集器的工作方式,是探讨Java堆结构如何支持分代机制的最好的方式。伊甸区(Eden)的大部分对象都是刚刚被分配的。幸存区(survivor)用来临时存储那些从伊甸区里幸存下来的对象。当我们讨论完次要回收(minor collections)后将描述幸存区的用途。伊甸区和幸存区统称为“年

152 页简明《计算机视觉》入门教程,带你回顾 CV 发展脉络_本文是计算机科学家christoph rasche撰写的一份计算机视觉方面的系列教程,从-程序员宅基地

文章浏览阅读305次。本文是计算机科学家Christoph Rasche撰写的一份计算机视觉方面的系列教程,从传统的图像处理、特征提取到近几年很热的深度神经网络,以及深度学习方法在目标检测、图像检索、图像分割、目标跟踪等一系列前沿的介绍。书本里本文是计算机科学家Christoph Rasche撰写的一份计算机视觉方面的系列教程,从传统的图像处理、特征提取到近几年很热的深度神经网络,以及深度学习方法在目标检测、图像检索、..._本文是计算机科学家christoph rasche撰写的一份计算机视觉方面的系列教程,从

随便推点

Proxmox VE 7.2 qm 方式批量导入ESXi OVA_virtio scsi single-程序员宅基地

文章浏览阅读2.9k次。一个ovf文件,文件包虚拟机的硬件配置,例如cpu规格、内存等一个或多个vmdk,虚拟机的硬盘镜像,数量取决于虚拟机有多少个硬盘。_virtio scsi single

ListView的使用及其优化_listview的基本使用与优化-程序员宅基地

文章浏览阅读191次。一、直接使用ListView组件创建1.直接在XML中创建ListView用entries属性附上一个数组资源其中divider属性是设置分割线可以使用颜色和drawable资源分割 <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:divi_listview的基本使用与优化

华为无线AC常用命令记录_display ap all为idle-程序员宅基地

文章浏览阅读833次,点赞8次,收藏7次。【代码】华为无线AC常用命令记录。_display ap all为idle

编译原理复习(2023.4.25考试版本)_有害规则和多余规则-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏21次。本次复习采用的是这本书,如有书写不当的地方,欢迎批评指正!_有害规则和多余规则

如何在Ubuntu 14.04当中将Bind配置为仅权威DNS服务器_auth-nxdomain no;-程序员宅基地

文章浏览阅读1.4k次。提供:ZStack云计算 系列教程本教程为DNS管理介绍系列七篇中的第五篇。内容介绍DNS,或者称为域名系统,往往成为学习网站与服务器配置中的一大难点。尽管很多人都会使用由托管厂商或者域名注册商提供的DNS服务器,但建立自己的DNS服务器亦能带来诸多不容忽视的助益。在本篇教程中,我们将探讨如何在Ubuntu 14.04当中安装Bind9 DNS服务器并将其配置为仅权威DNS服务器。作为示例,我们将立_auth-nxdomain no;

IDEA快捷键、自定义模板_idea 设置自定义快捷键模板-程序员宅基地

文章浏览阅读377次,点赞8次,收藏7次。快速格式化代码(改善代码格式,砍起来更好看) ctrl + alt + L。【第一次是添加注释,第二次是取消注释】快速运行程序 自己定义 shift +在java中找到+号 进行添加。将光标放在一个方法上,输入。导入该行需要的类 先配置。ctrl + 左键 ,查看一个类的层级关系。学习继承后,非常有用。还有很多其它的快捷键。自己的定义的一些模板。_idea 设置自定义快捷键模板

推荐文章

热门文章

相关标签