C++类的构造函数

    第一次写博客,有点不知从哪点下手,还是先记录一下最近看的C++有关类的构造函数方面的知识吧。

    首先,类的构造函数是在类的定义时就直接对该类对象的成员变量进行初始化,构造函数的函数名与类名相同且没有返回值,构造函数不能被子类继承,也不能声明为虚函数,在子类中必须重新定义构造函数,但构造函数可以进行重载,定义子类对象时先调用父类的构造函数,再初始化自身的成员,这正好与析构函数的执行顺序相反。当没有在类中显示定义构造函数时,系统一般会提供默认的构造函数。

    其次,构造函数的调用过程中可以进行隐式类类型转换,如下Sales_item类的定义所示:

class Sales_item{

private:
string isbn;
unsigned units_sold;
double revenue;
public:
double avg_price() const;
bool same_isbn(const Sales_item &rhs) const;//判断isbn号是否相同
        Sales_item(const string &book):isbn(book),units_sold(0),revenue(0.0){}//带默认参数的构造函数
Sales_item(std::istream &is);//接受输入的构造函数
void display();
};

string null_book="001";

item.same_isbn(null_book);//对已定义的item调用same_isbn函数,其中的参数是一个字符串对象,而该函数的参数是Sales_item类型。编译器使用接受一个string的Sales_item构造函数,从null_book生成一个新的Sales_item对象,新生成的Sales_item对象被传递给ame_isbn函数。当两个构造函数声明为explicit时则必须显示使用构造函数,如下item.same_isbn(Sales_item(null_book));.

    OK,先写到这吧,练练手。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值