2 dfgrgegsezgzs dfgrgegsezgzs 于 2016.03.13 16:43 提问

const成员函数内将该类的数据成员变成const?
c++

#include
using namespace std;
class A
{
public:
void action()
{
cout << "Action in class A!" << endl;
}
};
class B
{
A a;
int s;
public:
void action()
{
cout << "Action in class B!" << endl;
}
A operator->() const
{
return &a;
}
};
class C
{
B b;
public:
void action()
{
cout << "Action in class C!" << endl;
}
B operator->() const
{
return b;
}
};
int main()
{
C *pc = new C;
pc->action();
C c;
c->action();
return 0;
}
在class B中重载->函数被定义为const的。报错说const A
不能转换为A*

1个回答

cxsmarkchan
cxsmarkchan   2016.03.13 17:01
A operator->() const
{
return &a;
}

修改为:

A* operator->()
{
return &a;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++的const类成员函数(解释为什么非const成员函数不能访问const对象的数据成员)
1. 在C++中只有被声明为const的成员函数才能被一个const类对象调用。如果要声明一个const类型的类成员函数,只需要在成员函数列表后加上关键字const, 例如: class Screen { public: char get() const; };在类体之外定义const成员函数时,还必须加上const关键字,例如: char Screen :: get() c
const成员变量与成员函数
1)const成员函数可以访问(不可改变)所有对象(const对象和非const对象)的所有数据成员; 2)非const成员函数可以访问非const对象的非const数据成员、const数据成员,但不可以访问const对象的任意数据成员(也即,const对象不能调用非const成员函数); 3)作为一种良好的编程风格,在声明一个成员函数时,若该成员函数并不对数据成员进行修改操作,应尽可
const成员函数修改成员变量的问题
class CTextBlock{ public: std::size_t length() const; private: char *pText; std::size_t textLength; bool lengthIsValid; }; std::size_t CTextBlock::length()const { if (!lengthIsValid) { textLe
非const对象也可以调用const成员函数
当一个类只有const成员函数的时候,非const对象也可以调用const成员函数: // ConstTest.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; class A { public: A( void ) { }
const类型参数的对象引用和const成员函数
const类型参数的对象引用 在如下的类声明中: class C{ private: string name; public: C(){/*...*/} //default constructor C(int x){/*...*/} //convert constructor void setName(const string& n){name = n;
为什么const对象只能调用const成员函数,而不能调用非const成员函数?
参考:http://www.cnblogs.com/cplinux/articles/5553716.html 在c++中,我们可以用const来定义一个const对象,const对象是不可以调用类中的非const成员函数,这是为什么呢?下面是我总结的一些原理。 假设有一个类,名字为test代码如下:   1 class test{ 2   int i; 3 pub
const成员函数内部如何改变成员变量
原文地址 在C++中,由const修饰的成员函数的函数体内部,是不能够对成员变量进行修改的。这个特性被用来保证某些成员函数在实现过程中,避免由于程序员大意而对数据进行了错误的修改;同时也说明此成员函数是非修改性的。如只需要返回成员变量的成员函数就被声明为const类
const成员对于const对象和非const对象的访问原则
<br />const对象只能访问const成员函数。因为const对象表示其不可改变,而非const成员函数可能在内部改变了对象,所以不能调用。<br />而非const对象既能访问const成员函数,也能访问非const成员函数,因为非const对象表示其可以改变。<br />
const放在函数后面不可以修改对象的数据
最近对const修饰函数的行为有疑惑,在网上看到一篇这样的文章,转载过来,已备查阅:) http://blog.csdn.net/zcf1002797280/article/details/7816977 就不复制文章内容啦~
浅谈C++中const成员和非const成员的联系和区别
C++中我们经常会碰到const数据成员和const成员函数,他们在使用方面跟非const数据成员和非const成员函数有很大的区别,这里根据自己的经验,谈一下自己看法,如有错误,请大家指教:       (1):在赋值方面,const数据成员只能采用初始化列表方式,而非数据成员可以采用初始化列表和构造函数体内赋值两种方式。          class Test           {