构造函数

来源:互联网 发布:nginx 只允许内网访问 编辑:程序博客网 时间:2024/05/21 09:18
#include <iostream>#include <string>using namespace std;class Dog{//const 常量//引用类型,没有默认构造函数的类类型  只能用初始化列表Dog():i(10){}//{//i=10;  //error//}private:const int i;};class Person{public://无构造函数,默认构造函数,一般要求必须写上构造函数Person(const string& nm,int year):name(nm),age(year) //初始化顺序随便写 不是初始化顺序                                                 //定义成员决定顺序{}private:std::string name;int age;};class Sales_item{public://Sales_item():units_sold(0),revenue(0){} //可重载 自己写了构造函数,就不会创建(没有默认写)explicit Sales_item(std::istream& is){is>>*this;} //一个形参构造函数副作用 隐性转化 加上explicitexplicit Sales_item(const std::string& book=""):isbn(book),units_sold(0),revenue(0){}//可省略                                          //book=""Sales_item():units_sold(0),revenue(0){}bool same_isbn(const Sales_item &rhs) const{ return this->isbn == rhs.isbn; }friend std::istream& operator>>(std::istream&,Sales_item&); //友元函数 流输入操作符重载private:std::string isbn;unsigned units_sold;double revenue;};inline istream& operator>>(std::istream& in,Sales_item& s){double price;in>>s.isbn>>s.units_sold>>price;if(in)s.revenue=s.units_sold*price;elses=Sales_item();return in;}int main(){Sales_item p1;//不能 写成p1() 若就是一个函数了//explicit Sales_item p2("990-123");//p2.same_isbn("999988")return 0;}

0 0
原创粉丝点击