const 成员方法】的更多相关文章

1.使用场景 代码提供者告诉客户(代码使用者),这个方法不会修改对象的内容,请客户放心使用. 2.代码提供者,尝试在const成员方法中修改对象内容,编译报错.在成员方法中,this是const 指针,不允许修改this指向其他内容.const 成员方法,限制了this为指向const对象的const指针. 3.const对象只能调用const成员方法,因为non-const成员方法可能会修改对象内容,这与const对象矛盾. 4.non-const对象可调用const成员方法,也可以调用non…
const可以放在成员方法的三个地方,前.中.后. 首先考虑在中间: 1.const修饰形参,表示形参是否为const 2.如果const修饰引用(指针指向的对象),可以进行过载,如果不是修饰引用(指针指向的对象),不能进行过载.为什么? 首先考虑引用,引用是一个对象的别名,在调用的时候,编译器根据原对象的常量性,可以找到一个最匹配的方法.const修饰指针指向的对象,和引用是同样的道理.如果const不是修饰引用或者指针指向的对象,就不能过载.因为,这种情况下,是整体拷贝,拷贝后的对象和原对象…
1.为什么搞出const关键字? const指定一个语义约束,指定一个对象不可修改.如果一个对象不可修改,就应该说出来. 2.const与指针 const可以修饰指向之物,也可以修改指针本身.STL中的迭代器是对指针的封装,因此,迭代器也有两个概念:指向常量对象的迭代器和常量迭代器. vector<int>::const_iterator; //指向常量的迭代器 const vector<int>::iterator; // 常量迭代器 3.const可以与方法产生关联,可以用在方…
一.对变量的修饰 在c++中,如果我们希望定义一个值不会被改变的变量,那么可以用关键字const对它进行修饰,被修饰后的变量其作用相当于一个常量 //这两种方式等价 2 语法1:const 类型名 变量名 3 语法2:类型名 const 变量名 特别注意: 1.const对象一旦创建,其值就不能再被改变.因此const对象必须初始化 const int i=get_size();//正确:运行时初始化 ; //正确:编译时初始化 const int k; //错误:k是一个未经初始化的常量 2.…
1.方法包括方法名,返回类型,形参表,修饰符. 2.对于一个方法,const可以出现的地方有返回类型,形参表,和方法后(const成员方法). 3.返回类型的常量性(是否为const)不同,不能构成过载.为什么? 过载是编译时多态,也就是说,在编译的时候,已经确定下来调用哪个方法.对于又返回类型的方法,调用的时候,可能不处理返回值,这样的话,编译器就不知道该调用哪个方法了. 4.我们知道,形参表不同可以构成过载.如果形参表相同,只是形参的常量性不同,能否构成过载? 形参为引用或者指针,可以构成过…
1.什么是智能指针? 所谓智能指针就是,看起来,用起来,感觉起来都像原始指针,但是提供了更多功能. 2.使用智能指针取代原始指针,可以获得更多的控制权.如下: a.在构造和析构的时候,可以做一些事. b.在复制和赋值的时候,可以做一些事. c.在解引用的时候,可以做一些事. 3.智能指针可以对不同类型的指针进行封装,因此智能指针是一个模板类. 4.智能指针对原始指针封装,内含一个原始指针,为了用起来像指针,重载->和*,->返回原始指针,*返回对象的引用,两个重载操作符都不改变智能指针,因此是…
1.auto_ptr<T>解决什么问题? 在堆上获取的资源,客户可能会忘记delete,或者由于异常没有执行到delete,导致资源泄漏.在栈上分配的对象,有个特点,不论出现什么情况,超出作用域后,都将调用析构方法.根据这个特点,可以使用栈上的对象管理指针,析构的时候执行delete,确保一定释放资源. 2.auto_ptr就是解决这个问题的,auto_ptr就是个资源管理类,它的特点是拥有权转移. 3.考虑,如果让我来设计auto_ptr,我该怎么做? auto_ptr是个资源管理类,对指针…
volatile 遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问. 所以说volatile可以保证对特殊地址的稳定访问. mutable 如果需要在const成员方法中修改一个成员变量的值,那么需要将这个成员变量修饰为mutable.即用mutable修饰的成员变量不受const成员方法的限制.…
[1]示例代码 用代码说事,比较靠谱.请看下例: #include <QDebug> #include <QString> class Person { public: Person(int nAge, QString name); Person(, , QString name = "xiaoZhang"); int getAge(); int getAge() const; QString getName(); int getSex(); int getSe…
本文总结一下C++面试时常遇到的问题.C++面试中,主要涉及的考点有: 关键字极其用法,常考的关键字有const, sizeof, typedef, inline, static, extern, new, delete等等 语法问题 类型转换 指针以及指针和引用的区别 面向对象的相关问题,如虚函数机制等 泛型编程的相关问题,如模板和函数的区别等 内存管理,如字节对齐(内存对齐).动态内存管理.内存泄漏等 编译和链接 实现函数和类 零.序章 0.1 C++与C的对比 C++有三种编程方式:过程性…