注册 登录
编程论坛 C++教室

关于构造函数的问题

o0花生0o 发布于 2007-12-05 17:12, 1523 次点击
#include<iostream.h>
#include<stdlib.h>
class Stock
{
      char stockcode[10];
      int quan;
      double price;
public:
       Stock(char cd[],int q=1000 ,double p=8.98)
       {            
              strcpy(stockcode,cd);
              quan=q;
              price=p;   
       }
       void print(void);        
};
void Stock::print(void)
{
     cout<<this->stockcode<<" ";
     cout<<this->quan<<" ";
     cout<<this->price<<endl;
}            
int main()
{   
    Stock A="a",B("a",500,9.0);
    A.print();
    B.print();
    system("pause");
}
这个程序在声明构造函数时必须给出定义吗?
为什么在类外定义构造函数时会出错?
10 回复
#2
中学者2007-12-05 17:29
没又说要在声明构造函数时给出定义,你把你错误的代码贴贴~
#3
o0花生0o2007-12-06 00:41
错误代码
#include<iostream.h>
#include<stdlib.h>
class Stock
{
      char stockcode[10];
      int quan;
      double price;
public:
       Stock(char cd[],int q=1000 ,double p=8.98);
             void print(void);        
};
Stock::Stock(char cd[],int q=1000 ,double p=8.98)
 {            
              strcpy(stockcode,cd);
              quan=q;
              price=p;   
      }

void Stock::print(void)
{
     cout<<this->stockcode<<" ";
     cout<<this->quan<<" ";
     cout<<this->price<<endl;
}            
int main()
{   
    Stock A="a",B("a",500,9.0);
    A.print();
    B.print();
    system("pause");
}
只是把构造函数放在类外定义就出错了
#4
中学者2007-12-06 08:33
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
class Stock
{
      char stockcode[10];
      int quan;
      double price;
public:
       Stock(char cd[],int q=1000 ,double p=8.98);
             void print(void);        
};
Stock::Stock(char cd[],int q=1000 ,double p=8.98)   //默认参数只在声明时指出,这里时定义就不要指出了
                                                                                        改成(char cd[], int q, double p)
{            
              strcpy(stockcode,cd);
              quan=q;
              price=p;   
      }

void Stock::print(void)
{
     cout<<this->stockcode<<" ";
     cout<<this->quan<<" ";
     cout<<this->price<<endl;
}            
int main()
{   
    Stock A="a",B("a",500,9.0);
    A.print();
    B.print();
    system("pause");
return 0;
}
#5
yanyananlin2007-12-06 12:24
我是初学者,请问strcpy(stockcode,cd);这是什么意思啊?
#6
o0花生0o2007-12-06 18:28
就是把cd的值赋给stockcode
strcpy是字符串拷贝函数






问题解决了
谢谢四楼了

[[italic] 本帖最后由 o0花生0o 于 2007-12-6 18:29 编辑 [/italic]]
#7
yanyananlin2007-12-06 22:06
明白了,谢谢你~
#8
way32007-12-08 16:18
还有一个问题就是要有一个处理字符串函数的头文件.
#9
o0花生0o2007-12-10 09:12
没有处理字符串函数的头文件编译也没有出错
#10
mayungang2007-12-10 13:51
我想问一下,strcpy(stockcode,cd);是如何实现值复制的呢,说具体一些好吗
#11
FIO2007-12-11 13:07
把cd放入stockcode变量的地址里系统自动加上'/d'
1