复制构造函数的const参数的问题

cxjchen 2012-11-11 12:05:35
最近学习写了一个复制构造函数,有一些疑问

class test{
private:
int a;
public:
test();
test(const test& T){
a = T.a;
};
~test();
int getdate();//返回a的值,实现我就不写了
}

我这样写是可以编译通过的,我这样写是对的吗?
我想问的是,复制构造函数可以直接调用传进来的T的私有变量?

class test{
private:
int a;
public:
test();
test(const test& T){
a = T.getdata();
};
~test();
int getdate();//返回a的值,实现我就不写了
}

我这样写就会编译报错。
我想问的是,是因为const参数不能调用函数吗?这样写为什么不对呢?
...全文
160 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_ask_who 2012-11-11
  • 打赏
  • 举报
回复
写成int getdate() const;就可以调用了
ouyh12345 2012-11-11
  • 打赏
  • 举报
回复
我想问的是,复制构造函数可以直接调用传进来的T的私有变量? 当然可以,都是一个类的
转角天边 2012-11-11
  • 打赏
  • 举报
回复
这个错误是由于const类型的对调用非const类型的方法导致的,const对象在调用成员函数时,会将this指针强制转换成const this指针,它调用成员函数时会去找对应的const getdata函数,而编译器无法将非const类型的getdata函数转换成const类型的getdata函数,因此出现编译错误 解决方法 将int getdata();改成int getdata () const;
jujue321 2012-11-11
  • 打赏
  • 举报
回复
t相的引用相当于一个指针,当然可以直接使用啊 第二个不清楚
cxjchen 2012-11-11
  • 打赏
  • 举报
回复
引用 3 楼 anhuizhuanjiao 的回复:
这个错误是由于const类型的对调用非const类型的方法导致的,const对象在调用成员函数时,会将this指针强制转换成const this指针,它调用成员函数时会去找对应的const getdata函数,而编译器无法将非const类型的getdata函数转换成const类型的getdata函数,因此出现编译错误 解决方法 将int getdata();改成int ……
谢谢 我明白了
cxjchen 2012-11-11
  • 打赏
  • 举报
回复
引用 2 楼 jujue321 的回复:
t相的引用相当于一个指针,当然可以直接使用啊 第二个不清楚
谢谢 我明白了
cxjchen 2012-11-11
  • 打赏
  • 举报
回复
引用 1 楼 mcmcmc 的回复:
写成int getdate() const;就可以调用了
谢谢 我明白了

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧