C++中要象这样初始化如何做?

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:19:49
class book
{
char *booktitle[5];
float price[5];
int buy;
float allprice;
public:
book();
void display();
};
book::book()
{
int i=0,j=0;
for (i=0;i<5;i++)
{
booktitle[i]=new char;
price[i]=0;
}
strcpy(booktitle[0],"123");
*booktitle[5]={"1","2","3","4","5"};------象这样
price={1,2,3,4,5};----------这样
buy=0;
allprice=0;
}
难道一定要用strcpy(booktitle[0],"123");?
不能直接初始化的?

1.你能保证 new 的返回指针是有序的么?
2.不能在构造函数中直接用字符串初始化数组,但是可以写个函数,让初始化列表调用它,例如:

class str
{
public:
str(char * p):b(NewStr(p)){}
~str(){delete b;}
char * b;
private:
char * NewStr(char * p);

};

char * str::NewStr(char * p)
{
char * k = new char[strlen(p)+1];
strcpy(k,p);
return k;
}

#include <vector>
#include <string>
using namespace std;

class book{
private:
vector<char*> booktitle; // 或者vector<string> booktitle
vector<float> price;
int buy;
float allprice;
public:
book();
void display();
};
book::book( ):buy(0),allprice(0){
booktitle.push_back("1");
booktitle.push_back("2");
booktitle.push_back("3");
booktitle.push_back("4");
booktitle.push_back("5");
for(int i = 0; i < 5; ++i)
pric