mutable作用详解加代码例
mutable是C++中的一个关键字,意思是可变的。mutable主要用途就是针对const函数。如果没有const关键字,也就没有mutable关键字。先来看如下代码:
类是 C++ 的核心特性,通常被称为用户定义的类型。
类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。
类中的数据和方法称为类的成员。
mutable是C++中的一个关键字,意思是可变的。mutable主要用途就是针对const函数。如果没有const关键字,也就没有mutable关键字。先来看如下代码:
const的意义就是常量,代表不可变。用const修饰过的变量或函数都有不可变的意义在里面,在编程中可以很好的运用这点不可变性。
先来看一段代码: circle c1;
string strc21 = c1; //这句编译通不过
cout<
析构函数Destructor与构造函数是相反的,构造函数一般完成些初始化工作,哪么析构函数应该就是完成一些收尾工作。析构函数是在C++对象销毁的时候自己掉用。哪什么时候对象会被销毁?两种情况:1.当某个对象离开作用域时;? ?作用域不明白的请看这篇:C++支持哪些作用域2.当调用delete删除某个对象进;析构函数的定义:析构函数以“~”引起,函数名与类名一样,不能有返回值,参数表必须为空。下面写段代码来分析析构函数的调用。
上一篇讲了转换构造函数有什么用途,知道了转换构造函数经常会在不经意就被调用,当不希望发生转换时,哪有什么办法可以让它不要隐式调用转换吗?是有的,就是关键字explicit作用。以上一篇代码来修改,来介绍explicit:
在C++中,当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。转换构造函数要如何理解,从字面上将转换和构造函数分开理解。1.发生了转换,如何发生转换的?2.转换构造函数也是一个构造函数,完全可以当构造函数一样使用先带着这两个问题来看段代码就会明白:
当对象开始创建时,就会调用构造函数。一般会在构造函数中完成一些初始化工作,比如成员的赋值等。构造函数也是成员函数,是特殊的成员函数。
默认构造函数
带参数构造函数
转换构造函数:
拷贝构造函数:
auto_ptr是如何实现智能指针,主要思想在于将指针包装后存放在栈上,这样就能自动清除工作,这是内存栈的特点。int a = 0; //a变量存放在栈上哪auto_ptr是如何实现呢?
组合类简单点讲就是A类中有B类,B类定义在A类外面。比如点类和圆类,圆类就可以设计成组合类。因为外部程序会用到点对象,也会用到圆对象,所以这种将圆类设计成组合类比嵌套类较合适。
嵌套类就是A类中有B类,B类定义在A类里面。这种就有了从属关系,要单独定义B类就必须要写成A::B b(B定义在A类中公有的public部份),这种可以看成多了一层名字空间,但这不是主要目的。一般来说B类如果只属于A类,外部几乎不会用到B类,这种情况下就会设计成设计成嵌套类。对类进行嵌套通常是为了帮助实现另一个类,并避免名称冲突。
大家在学习C++语言的时候,讲到类的访问权限问题时,对私有的private部份访问,书上写的都是只能是类内成员可以访问,也就是成员函数可以访问。类外部是不可以访问到,也修改不了值的。
今天跟大家讲一下比较锋茫的方法,在类外用指针来实现修改类内私有pravite成员。(指针是一把双刃 剑,一定要完全理解,不然会伤到自己)。学习以下内容还有预备知识,如果知道类在内存中存放,可以不用看,不明白的可以先看这篇:类中成员定义顺序在内存中排列