-
一个对象可以有多个对象常引用。查看全部
-
在这里,指针pCoor所指向的对象并非常对象。查看全部
-
对象的常指针与常引用查看全部
-
对象的引用以及对象的指针:查看全部
-
const对象的数据成员在对象生存期内不能改变。但是,如何保证该类的数据成员不被改变呢?为了确保const对象的数据成员不会被改变,在C++中,const对象只能调用const成员函数。如果一个成员函数实际上没有对数据成员作任何形式的修改,但是它没有被const关键字限定的,也不能被常量对象调用。查看全部
-
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。查看全部
-
常成员函数不能更新对象的数据成员; 当一个对象被声明成一个常对象后,则该对象不能调用该类的非常成员函数;查看全部
-
常成员函数的定义可以理解为:查看全部
-
常成员函数的定义查看全部
-
常成员函数查看全部
-
常对象成员,即数据成员是对象,且用const修饰查看全部
-
(1)常对象只能调用常成员函数,或是公用的常数据成员,不能调用普通成员函数 (2)私有的常数据成员,初始化要用成员初始化列表 (3)常成员函数,本质就是把this指针指向的变量变为常量,所以形如这样:this->a = 10;是错误的,因为this指向的量a是一个常量,不可以更改值。所以在常成员函数体中是不可以更改this指针指向的数据成员的值的 (4)常成员函数中也不能调用普通成员函数,但是可以访问到私有的数据成员查看全部
-
用const修饰对象成员,对象成员就变成了常对象成员 用const修饰成员函数,成员函数就变成了常成员函数。const要放在函数的最后, 一旦初始化就不能再修改,const就是干这个的,长对象成员用初始化列表初始化 函数里看着没有参数,实际上隐藏着this指针。常成员函数中隐藏的是常this指针,常指针指向的数据不允许被修改 例如:void Coordinate::changeX(){m_iX = 10;}即为void Coordinate::changeX(Coordinate *this){this->m_iX = 10;} void Coordinate::changeX()const{m_iX = 10;}即为void Coordinate::changeX(const Coordinate *this){this->m_iX = 10;}这里的m_iX = 10;的写法是错误的,this已经是常指针,通过常指针是无法修改值的 void changeX();与void changeX() const互为重载 要调用const修饰的常成员函数,实例化对象时,必须用const来修饰对象,const写在最前面查看全部
-
1、this指针无需用户定义,是编译器自动产生的。 2、同一个类的两个对象的this指针指向不同位置的内存:对象各自的this指针指向各自对象的首地址,所以不同对象的this指针一定指向不同的内存地址 3、当成员函数的参数或临时变量与数据成员同名时,可以使用this指针区分同名的数据成员。 4、this指针也是指针类型,所以在32位编译器下也占用4个基本的内存单元,即sizeof(this)的结果为4查看全部
-
Array printInfo();要求返回值类型是一个对象,而Array Array::printInfo(){return *this}的返回值就是一个对象。 this指针系统会自己加 Array Array::printInfo(){return *this;}返回出去之后的*this指针是一个临时的对象,并不是arr1 Array& Array::printInfo(){return *this;}这样返回出去的就是arr1了。 在类中也要这样定义,加入引用之后,一切都清晰起来了 使用点号可以将多个方法穿起来使用 声明和定义函数用的是&,即为引用,返回值要加*,即为return *this; 调用函数是用点号. 声明和定义函数用的是*,即为指针,返回值不用加* ,即为return this;调用函数是用-> class Array { public: Array(int len); ~Array(); Array* setLen(int len);//注意 int getLen(); Array& printInfo();//注意 private: int len; }; Array* Array::setLen(int len) { this->len = len; return this; } Array& Array::printInfo() { cout<<"len = "<<len<<endl; return *this; } int main(void) { Array arr1(10); arr1.printInfo().setLen(5)->printInfo();//这里都是针对arr1的操作 system("pause"); return 0; } 1.可用this指针做返回 2.*this对象做返回与引用Array &配合 都可对原对象做操作查看全部
举报
0/150
提交
取消