函数返回值为 const 指针,可以使得外部在得到这个指针后,不能修改其指向的内容。返回值为 const 引用同理。 classCString{private:char*str;public:constchar*c_str()const;};constchar*CString::c_str()const{returnstr;}intmain(){CString s;constchar*p=s.c_str();} 下面的两条语句编译时都会报错。第一...
1、返回值类型 返回类型一般声明为类型的引用,并在函数结尾时返回实例自身的引用(即*this)。这里主要有两个原因: (1)返回引用可以减少一次拷贝构造和析构函数导致不必要的开销,因为返回值类型不是引用,会创建一个匿名对象,这个匿名对象时个右值,获取return的值。 (2)可以实现连续赋值 在例子中 b=c=a; 返回值...
const函数本身是不会修改数据成员的,但是通过它的返回值可以在外部修改对象内部数据。如果对象是non-const的,这种情况还可以接受;但是如果对象是const的,这种情况就不是所期望的了。 个人建议 要防止这种情况发生可以对返回值加const,或者对于在类内部需要把返回值作为左值的则把访问级别限制为public以下(需要再外部修改...
char & operator [](int pos) const//返回类型不为const编译错误 { return ptext[pos]; } string ptext; }; int main() { string s = "abcd"; T t(s); //t[0] = 't';//因为为const返回类型,所以不能赋值 printf("%s\n", s.c_str()); }...
const成员函数 书中的构造函数和析构函数的总结 this指针 & 类对象作为类方法的参数 & 返回值为类对象的引用 对象数组&this指针 一起使用的一个例程 类作用域 作用域为类的常量(在类中定义常量) 类似栈的C++实现方法 类和对象定义的基础知识 //通过一个例子来说明如何创建类和对象//类声明通常在h文件完成...
C++ const函数返回值必须为const引用 编译正确代码: #include<stdio.h> #include <string.h> #include<iostream> using namespace std; class T{ public: T(string p) { ptext = p; } const char & operator [](int pos) const { return ptext[pos];...