标题:基于 c++ 中 strcmp 的用法错误分析
只看楼主
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
结帖率:100%
已结贴  问题点数:20 回复次数:4 
基于 c++ 中 strcmp 的用法错误分析
#include<iostream>
原始代码(出错代码)为:
#include<string>
using namespace std;
class Point
{
      protected:
              int x,y;
      public:
             void draw(int a,int b)
             {
                  x=a;
                  y=b;
             }
             void show()
             {
                  cout<<"This point is the abscissa for "<<x<<", y coordinate for"<<y<<endl;
             }
};
class colour_Point : public Point
{
      private:
              char colour;
      public:
              virtual void draw(int m,int n,char &q)
             {
                  x=m;
                  y=n;
                  colour=q;
             }
             virtual void show()
             {
                  cout<<"This point is the abscissa for "<<x<<", y coordinate for"<<y<<endl;
                  cout<<"And the Point's colour is   "<<colour<<endl;
             }
};


int main()
{
    Point point;
    point.draw(3,4);
    point.show();
    colour_Point colour_point;
    colour_point.draw(4,5,"紫色");
    colour_point.show();
    system("pause");
    return 0;
}
    //以上代码编译出错,出错原因:字符串字长限制。
   
   修改方案:将地址引用,换成指针传递变量。

修改成功的代码为:
#include<iostream>
#include<string>
using namespace std;
class Point
{
      protected:
              int x,y;
      public:
             void draw(int a,int b)
             {
                  x=a;
                  y=b;
             }
             void show()
             {
                  cout<<"This point is the abscissa for "<<x<<", y coordinate for"<<y<<endl;
             }
};
class colour_Point : public Point
{
      private:
              char *colour;
      public:
              virtual void draw(int m,int n,char *q)
             {
                  x=m;
                  y=n;
                  colour=q;
             }
             virtual void show()
             {
                  cout<<"This point is the abscissa for "<<x<<", y coordinate for"<<y<<endl;
                  cout<<"And the Point's colour is   "<<colour<<endl;
             }
};


int main()
{
    Point point;
    point.draw(3,4);
    point.show();
    colour_Point colour_point;
    colour_point.draw(4,5,"紫色");
    colour_point.show();
    system("pause");
    return 0;
}
   编译结果为:    This point is the abscissa for  3 , y coordinate for 4   
                   This point is the abscissa for  4 ,y coordinate for 5,and the Point's colour is 紫色
搜索更多相关主题的帖子: private include public 
2014-09-07 14:23
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:5 
说实话 没看懂
2014-09-07 14:48
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
得分:15 
关字长什么事.. 我觉得你应该去看下如何使用引用.

数组类的数据只能用指针引用.

hl928452957@gmail点com

2014-09-08 08:37
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
得分:0 
回复 2 楼 zklhp
地址引用与指针传递的区别吧。程序运行前后有明显的修改之处。

#############################################
##########################################
因为不懂、才要学习、只有学习、才有进步。
2014-09-08 16:14
七夜之华
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
威 望:5
帖 子:82
专家分:103
注 册:2014-9-7
得分:0 
回复 3 楼 stop1204
字长限制是程序运行后指定的错误,不过你的建议我会好好看看的呢。

#############################################
##########################################
因为不懂、才要学习、只有学习、才有进步。
2014-09-08 16:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-435823-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112972 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved