由于stock类的初始化与int不同,因此常规语法无法使用。(指初始化类)
int year=2001;
struct thing;
{
char*pn;
int m;
};
thing amabob={“wodget”,-23};
stock hot={“sukie’s autos,inc.",200,50.25}
上面的数据是被隐藏的,即pn,m.
该程序不能直接访问数据成员,程序只能通过成员函数来访问数据成员,因此要设计成员函数
,才能将对象初始化,而不是私有
stock gift;
gift.buy(10,24.75);
1:声明和定义构造函数(构造函数是函数)
stock (const string &co,long n,double pr)
{
company=co;
if(n<0)
{
std::cerr<<"number of shares can't be negative;"
<<company<<"shares set to 0.\n";
shares=0;
}
else
shares=n;
share_val=pr;
set_tot();
}
使用构造函数
显示构造函数:来初始化对象
stock food=stock(“world cabbage”,250,1.25);
2:隐式构造函数
stock garment(“furry mason",50,2.5) //区别在于没有=和stock
也可以将构造函数与new一起使用:
stock*pstock=new stock(“electroshock games”,18,19.0);
这条语句创建一个对象,将其初始化为参数提供值,并将对象的值赋给pstock指针
stock1.show();
默认构造函数:
1:在未提供显示初始化值时,用来创建对象的构造函数
stock fluffy_the_cat;
默认构造函数可能如下:
stock::stock(){}
例如:
stock::()
{
company="no name";
shares=0;
share_val=0.0;
total_val=0.0;
}
析构函数:
创建函数对象以后,程序会调用一个特殊的成员函数。
~stock:这叫析构函数的原型。它不执行任何操作。
stock::~stock()
{
}
以下是析构函数如何被调用的代码:
stock::~stock()
{
cout<<“bye,”<<company<<"!\n";
}//编译器决定何时调用析构函数。
1:创建的是静态储存类对象,则析构函数将在程序结束时被自动调用。
2:如果创建的是自动存储类对象,则其析构函数将在程序执行完代码块时自动被调用。