//定义复制构造函数
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CBook
{
public:
char m_BookName[128]; //定义数据成员
const unsigned int m_Price;
int m_ChapterNum;
CBook() //默认构造函数
:m_Price(32),m_ChapterNum(15) //初始化数据成员
{
strcpy(m_BookName,"大学英语");
cout<<"构造函数被调用:"<<endl;
}
CBook(const CBook &book) //定义复制构造函数
:m_Price(book.m_Price)
{
m_ChapterNum=book.m_ChapterNum; //复制m_ChapterNum成员函数
strcpy(m_BookName,book.m_BookName);
cout<<"复制构造函数被调用"<<endl;
}
};
void OutputBookInfo(CBook book)
{
cout<<book.m_BookName<<endl;
}
int main()
{
CBook book; //定义一个CBook类对象book
OutputBookInfo(book);
return 0;
}
===========
//定义复制构造函数
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CBook
{
public:
char m_BookName[128]; //定义数据成员
const unsigned int m_Price;
int m_ChapterNum;
CBook() //默认构造函数
:m_Price(32),m_ChapterNum(15) //初始化数据成员
{
strcpy(m_BookName,"大学英语");
cout<<"构造函数被调用:"<<endl;
}
CBook(const CBook &book) //定义复制构造函数
:m_Price(book.m_Price)
{
m_ChapterNum=book.m_ChapterNum; //复制m_ChapterNum成员函数
strcpy(m_BookName,book.m_BookName);
cout<<"复制构造函数被调用"<<endl;
}
};
void OutputBookInfo(CBook &book) //以引用类型为参数将不会执行复制构造函数
{
cout<<book.m_BookName<<endl;
}
int main()
{
CBook book; //定义一个CBook类对象book
OutputBookInfo(book);
return 0;
}
======
//静态类成员
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CBook
{
public:
static unsigned int m_Price; //定义一个静态数据成员
};
unsigned int CBook::m_Price = 10; //通常在类体外进行初始化
int main()
{
CBook book;
cout<<CBook::m_Price<<endl; //用类名来访问静态数据成员
cout<<book.m_Price<<endl; //用对象访问
return 0;
}
==========
//静态类成员
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CBook
{
public:
static unsigned int m_Price; //定义一个静态数据成员
};
unsigned int CBook::m_Price = 10; //通常在类体外进行初始化
int main()
{
CBook book,vbook;
cout<<CBook::m_Price<<endl; //用类名来访问静态数据成员
CBook::m_Price=20;
cout<<book.m_Price<<endl; //用对象访问
cout<<vbook.m_Price<<endl; //静态成员是全局的,一个改,所有对象全改。
return 0;
}
=========
//每个对象都有自已的一份拷贝,其实是隐藏了this指针
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CBook
{
public:
int m_pages;
void OutputPages() //相当于 OutputPages(CBook* this)
{
cout<<m_pages<<endl; //相当于 this->m_pages
}
};
int main()
{
CBook vbBook,vcBook;
vbBook.m_pages = 512;
vcBook.m_pages = 570;
vbBook.OutputPages();
vcBook.OutputPages();
return 0;
}
========
//运算符重载
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CBook
{
public:
int m_pages;
void OutputPages()
{
cout<<m_pages<<endl;
}
CBook operator+(const CBook &book) //定义+运算符重载函数
{
CBook bk;
bk.m_pages = m_pages + book.m_pages; //实现数据相加
return bk;
}
};
int main()
{
CBook vbBook,vcBook,vfBook;
vfBook = vbBook + vcBook;
cout
return 0;
}
=========
//运算符重载
#i nclude <iostream>
#i nclude <iomanip>
#i nclude <string>
using namespace std;
class CBook
{
public:
int m_pages;
void OutputPages()
{
cout<<m_pages<<endl;
}
CBook()
{
}
CBook(int page)
{
m_pages=page; //将整数赋值给一个对象
}
};
int main()
{
CBook vbBook;
vbBook=200;
return 0;
}
=======