-
为什么需要const成员函数? 我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。 const成员函数和const对象 实际上,const成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。例如,定义一个整型常量的方法为: const int i=1 ; 同样,也可以定义常量对象,假定有一个类classA,定义该类的常量对象的方法为: const classA a(2); 这里,a是类classA的一个const对象,"2"传给它的构造函数参数。const对象的数据成员在对象生存期内不能改变。但是,如何保证该类的数据成员不被改变呢? 为了确保const对象的数据成员不会被改变,在C++中,const对象只能调用const成员函数。如果一个成员函数实际上没有对数据成员作任何形式的修改,但是它没有被const关键字限定的,也不能被常量对象调用。
查看全部 -
(1)常对象只能调用常成员函数(最后面加const),或是公用的常数据成员
(2)私有的常数据成员,初始化要用成员初始化列表
(3)常成员函数,本质就是把this指针指向的变量变为常量,所以形如这样:this->a = 10;是错误的,因为this指向的量a是一个常量,不可以更改值。所以在常成员函数体中是不可以更改this指针指向的数据成员的值的
(4)常成员函数中也不能调用普通成员函数,但是可以访问到私有的数据成员
查看全部 -
查看全部
-
Athis指针无需用户定义,是编译器自动产生的。
。
C当成员函数的参数或临时变量与数据成员同名时,可以使用this指针区分同名的数据成员。
Dthis指针也是指针类型,所以在32位编译器下也占用4个基本的内存单元,即sizeof(this)的结果为4。
查看全部 -
对象各自的this指针指向各自对象的首地址,所以不同对象的this指针一定指向不同的内存地址
查看全部 -
this指针的本质就是它所在对象本身的地址
查看全部 -
查看全部
-
return *this返回的是arr1的拷贝,是值传递,,并不是arr1。
查看全部 -
this指针的作用就是:解决了参数和数据成员重名的问题,让计算机清楚是参数传给了数据成员; this指针一般都是系统默认调用,以防止在实例化对象调用成员函数的时候出现错误,保证一一对应,当数据成员和构造函数中的形参名字相同是,计算机会分不清楚谁给谁赋值,这是需要人工加上this指针,用来区别。
查看全部 -
对象成员:一个对象作为另外一个类的数据成员
对象成员指针:一个对象的指针作为另外一个类的数据成员
1.对象成员指针的定义: 类名 * 指针名 是指针而不是对象
2.指针在32位编译器和64位编译器下的结果(x64 与 x86)
3.若存在对象成员指针1,2……。sizeof(指针1,指针2……)只计算各指针所
占内存的总和,不计算对象成员所占内存
对象成员指针如果在构造函数用 new 的方式从堆中申请内存实例化2个
Coordinate 对象,那这2个对象都是在堆中,而不在 Line 对象中,因为每个指
针占 4 个内存单元,因此 sizeof(Line) 只占 8 个内存单元,销毁 Line 的时
候,先销毁队中的内存,在释放 Line 本身的内存
查看全部 -
深层拷贝的时候要把指针地址所指的内容一一拷贝
查看全部 -
实例化对象A时,如果对象A有对象成员B,那么先执行对象B的构造函数,再执行A的构造函数。
C如果对象A中有对象成员B,那么销毁对象A时,先执行对象A的析构函数,再执行B的析构函数。
D如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B。
查看全部 -
生成A--生成B--生成线段——销毁线段——销毁B——销毁A
如果坐标类有一个默认构造函数,那么线段类在实例化的时候可以不使用初始化列表;如果坐标类的构造函数有参数,那么线段类在实例化的时候就必须使用初始化列表。
查看全部 -
查看全部
-
先实例化点,再实例化线,先销毁线对象再销毁点对象
查看全部
举报