/*
date: 09/03/21 11:34
description: 建構函式
作用:保證每個物件的資料成員具有合適的初始值
建構函式初始化式(初始化列表)
預設實參與建構函式
預設建構函式
隱式類型別轉換
類成員的顯示初始化
*/#include
#include
using
namespace std;
class
person
person
(string nm,
int ag)
:name
(nm)
,age
(ag)
string getname()
const
intgetage()
const};
class
catcat
(string &nm)
:name
(nm)
,age(0
) string getname()
intgetage()
private
: string name;
int age;};
class
dogprivate
: string name;
const
int legs;};
class
sales_item
explicit
sales_item
(const string &book,
int units,
double price)
:isbn
(book)
,units_sold
(units)
,revenue
(price)
explicit
sales_item
(const string &book="")
:isbn
(book)
,units_sold(0
),revenue
(0.0
)explicit
sales_item
(int units,
double price)
explicit
sales_item
(istream &is)
bool
same_isbn
(const sales_item &rhs)
const
friend istream&
operator
>>
(istream&
,sales_item&);
//友元函式,做了乙個流輸入操作符的過載 友元啊,過載啊,永遠的神
private
: string isbn;
unsigned units_sold;
double revenue;};
inline istream&
operator
>>
(istream& in,sales_item& s)
class
data
;class
eata
private
:int ival;
char
*ptr;};
intmain()
;//用9和1.2來進行初始化 c語言的寫法
eata w(9
,"hello");
//c++的寫法
sales_item item1;
sales_item item2
("0-201-82470-1");
// if(item2.same_isbn(string("0-201-82470-1")))//這一行拿著這個字串,利用建構函式建立了乙個新的物件 建構函式前加上explicit後,這一行報錯
// // if(item2.same_isbn(cin)) 建構函式前加上explicit後,這一行報錯
//
sales_item myobj;
if(myobj.
same_isbn
(item2)
)else
sales_item *p =
newsales_item()
;// sales_item item4(cin);
person a
("zhangsan",20
);cout
delete p;
return0;
}
c 學習 oop 析構函式
date 10 03 21 20 12 description 析構函式 建構函式 獲取資源 析構函式 釋放資源 合成的析構函式 三法則 rules of three 寫析構函式必須同時也要寫複製建構函式和賦值運算子 include using namespace std class sales i...
C 學習 建構函式
成員函式的一種 class complex 編譯器自動生成預設建構函式 complex c1 complex p new complex 上面兩個語句類的預設建構函式均被呼叫class a a a double r,double i a a1 缺少函式引數 a a new a 少參 a a 2 ok...
C 學習 建構函式
如果沒有為類顯式地定義乙個建構函式,則c 編譯器會自動生成乙個函式體為空的預設無參的例項建構函式。建構函式主要用於建立類的例項物件。當呼叫建構函式建立乙個物件時,建構函式會為物件分配記憶體空間,並初始化類的成員。建構函式分為例項建構函式和靜態建構函式兩種。例項建構函式用於建立和初始化類的例項。使用n...