代码没错又似乎错啦,请指点,c++

zhuceliyang 发布于 2012/11/07 19:33
阅读 230
收藏 0

#include <iostream>
using namespace std;
class my
{
public:
 my (int x,int y)
 {
  a=x;
  b=y;
 };
 my()
 {

 };
 void show(){
  cout<<a<<endl<<b<<endl;
 }
 my(const my &p)
 {
  a=a*a;
  b=b*b;
 };
private:
 int a,b;
};
int main(){
 my m1(12,13),m2,m3=m1,m4(m1);//
 m2=m1;
 m1.show();
    m2.show();
 m3.show();
 m4.show();
 return 0;

}

最后好像运行出来不是a b的平方呀数值很大,又不是随即值,结果如下。

12
13
12
13
687194768
687194768
687194768
687194768
 

 

加载中
0
优游幻世
优游幻世
 my(const my &p)
 {
  a=p.a*p.a;
  b=p.b*p.b;

 };好像是改成这样。。copy constructor不是这样用的吧

m2=m1使用的是赋值操作符,不会平方

0
xinzaibing
xinzaibing

你的复制构造函数怎么那么奇怪??

my(const my &p)

 {
  a=a*a;
  b=b*b;
 };


穿进去的是引用p,却不用P,而用未初始化的a和b做运算。。搞不明白你是什么意图。。

0
zhuceliyang
zhuceliyang

引用来自“优游幻世”的答案

 my(const my &p)
 {
  a=p.a*p.a;
  b=p.b*p.b;

 };好像是改成这样。。copy constructor不是这样用的吧

m2=m1使用的是赋值操作符,不会平方

多谢指点,改过来啦!
0
zhuceliyang
zhuceliyang

引用来自“xinzaibing”的答案

你的复制构造函数怎么那么奇怪??

my(const my &p)

 {
  a=a*a;
  b=b*b;
 };


穿进去的是引用p,却不用P,而用未初始化的a和b做运算。。搞不明白你是什么意图。。

多谢,我明白啦

返回顶部
顶部