C++构造和析构问题(高手进)

来源:百度知道 编辑:UC知道 时间:2024/05/09 20:55:10
程序清单 10.4 stock1.h
#ifndef STOCK1_H_
#define STOCK1_H_
class Stock
{
private:
char company[30];
int shares;
double share_val;
double total_val;
void set_tot() {total_val=shares * share_val;}
public:
Stock();
void acquire(const char * co,int n,double pr);
~Stock();
void buy(int num,double price);
void sell(int num,double price);
void update(double price);
void show();
};
#endif

程序清单10.5 stoc1.cpp
#include <iostream>
#include "stock1.h"
Stock::Stock()
{
std::cout<<"Default constructor called\n";
std::strcpy(company,"no name");
shares=0;
share_val=0.0;
total_val=0.0;
}
Stock::Stock(const char * co,int n,double pr)
{
std::cout<<"Constructor using"<<co<<" called\n";
std::strncpy(company,co,29);
company

错误1
没有声名Stock::Stock(const char * co,int n,double pr)这个构造函数,但是有这个函数的定义。

错误2
Stock stock2=Stock("Boffo Objects",2,2.0);
这句试用了“=”操作符。但是类中却没有进行重载。而且成员变量中包括一个数组的指针。这样也许能通过编译,但是执行起来肯定会有意想不到的事情。因为两个对象的company都指向同一段内存

可能还有一些逻辑上的错误。这就靠你自己找吧~~

运行没错啊,你想问那个方面的问题`?