C++成员指针无法赋值

q356425419 2013-01-12 03:59:31

class Image{

public:
int* getA(){return a;}
Image& operator=(const Image&r);


private:
int* a;
}

Image& operator=(const Image&r){
a = new int;
*a = 23;
}


void main(){
Image lena("lena.bmp");

Image lena1 = lena;
int* b = lena1.getA();
cout << *b;
}




这是部分代码,运行后,指针b无法赋值啊,为什么呢?
...全文
209 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
q356425419 2013-01-12
  • 打赏
  • 举报
回复
引用 6 楼 lile1234_show 的回复:
C/C++ code?1234567891011121314151617181920212223class Image{public: int* getA(){return a;} Image& operator=(const Image&r); private: int* a;}; Image& Image::operator=……
嗯,是这样的,谢谢哈!
q356425419 2013-01-12
  • 打赏
  • 举报
回复
引用 4 楼 pengjialaosan 的回复:
引用 3 楼 pengjialaosan 的回复:Image lena1 = lena;这一句其实没有调用你写的重载赋值操作符函数,它直接初始化了。 分成两句试试 Image lena1; lena1 = lena; Image lena1 = lena;这一句直接调用复制构造函数,你贴出来的代码里没有。
嗯,对,刚学,谢谢哈~
lee_鹿游原 2013-01-12
  • 打赏
  • 举报
回复

class Image
{
public:
	int* getA(){return a;}
	Image& operator=(const Image&r); 
private:
	int* a;
};

Image& Image::operator=( const Image&r )
{
	a = new int;
	*a = 23;
	return *this;
}

void main(){
	Image lena;
	Image lena1 ;
	lena1= lena;
	int* b = lena1.getA();
	std::cout << *b;
}

彭家老三 2013-01-12
  • 打赏
  • 举报
回复
类的最后大括号后面要有分号,你可能忘记加了。
彭家老三 2013-01-12
  • 打赏
  • 举报
回复
引用 3 楼 pengjialaosan 的回复:
Image lena1 = lena;这一句其实没有调用你写的重载赋值操作符函数,它直接初始化了。 分成两句试试 Image lena1; lena1 = lena;
Image lena1 = lena;这一句直接调用复制构造函数,你贴出来的代码里没有。
彭家老三 2013-01-12
  • 打赏
  • 举报
回复
Image lena1 = lena;这一句其实没有调用你写的重载赋值操作符函数,它直接初始化了。 分成两句试试 Image lena1; lena1 = lena;
q356425419 2013-01-12
  • 打赏
  • 举报
回复
引用 1 楼 lile1234_show 的回复:
楼主给的代码居然能运行么? 一看就是错代码.. 何等强大的编译器..
这是部分代码 !
lee_鹿游原 2013-01-12
  • 打赏
  • 举报
回复
楼主给的代码居然能运行么? 一看就是错代码.. 何等强大的编译器..

64,647

社区成员

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

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