您的位置:程序门 -> c/c++ -> c++ 语言



类的乱七分糟


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


类的乱七分糟
发表于:2007-08-24 14:23:48 楼主
#include   <iostream>
   
using   namespace   std;
class   simplecat
{
      public:
          simplecat   ();                             //   constructor
          simplecat(simplecat&);           //   copy   constructor
          ~simplecat();                             //   destructor
};
   
simplecat::simplecat()
{
        cout   < <   "simple   cat   constructor... "   < <   endl;
}
   
simplecat::simplecat(simplecat&)
{
      cout   < <   "simple   cat   copy   constructor... "   < <   endl;
}
   
simplecat::~simplecat()
{
      cout   < <   "simple   cat   destructor... "   < <   endl;
}
   
simplecat   functionone   (simplecat   thecat);
simplecat*   functiontwo   (simplecat   *thecat);
   
int   main()
{
        cout   < <   "making   a   cat... "   < <   endl;
        simplecat   frisky;
        cout   < <   "calling   functionone... "   < <   endl;
        functionone(frisky);
        cout   < <   "calling   functiontwo... "   < <   endl;
        functiontwo(&frisky);
        return   0;
}
   
//   functionone,   passes   by   value
simplecat   functionone(simplecat   thecat)
{
        cout   < <   "function   one.   returning...   "   < <   endl;
        return   thecat;
}
   
//   functiontwo,   passes   by   reference
simplecat*   functiontwo   (simplecat     *thecat)
{
        cout   < <   "function   two.   returning...   "   < <   endl;
        return   thecat;
}
针对上面的问题,小弟有以下几个疑问:
1,   simplecat(simplecat&);这个该如何理解
2,simplecat   functionone   (simplecat   thecat);这里面的参数又该如何理解
3,simplecat*   functiontwo   (simplecat   *thecat);这又是什么新的意思
前面的例子都蛮简单,但到这里是一头雾水.请能者给个详细的解释.
发表于:2007-08-24 14:39:501楼 得分:0
1.   不正确的复制构造函数签名
1-3,买本   c++   primer   e/4   读.
发表于:2007-08-24 14:42:122楼 得分:0
不至于吧....运行是正常的...
发表于:2007-08-24 14:51:423楼 得分:0
说1不正确是不准确的,应该是“不推荐的”,应该优先用simplecat(const   simplecat&);
还是买本c++   primer看看吧,函数声明问题都还没搞清楚,这个就也不知道怎么可以能讲得让你懂了,多看书吧。
发表于:2007-08-24 15:01:434楼 得分:0
我的理解,可能不怎么对:
simplecat(simplecat&);   如其名,拷贝构造函数,当你用类的构造函数实例化一个对象后,可调用拷贝构造函数,生成一个对象的拷贝对象,这个对象是原对象的一个副本,也是对原对象的一个引用,通常是在不允许改变原对象的情况下,我们对引用对象进行各种操作。
simplecat   functionone   (simplecat   thecat);是一个对simplecat类对象进行操作的一个函数,如果同类放在同一个头文件里也可以算作是simplecat类定义的一部分。
simplecat*   functiontwo   (simplecat   *thecat);中所使用的参数是一个指向类对象的一个指针,整个函数定义为一个需要指针操作的函数。
嗯!就写这些吧!
还请高人指教!


快速检索

最新资讯
热门点击