简单类的定义和继承
class book
{
?? ?char* title;//書名
?? ?int num_pages;//頁數
?? ?char * writer;//作者姓名
public:
?? ?book( char* the_title, int pages, const char* the_writer) :num_pages(pages)
?? ?{
?? ??? ?title = new char[strlen(the_title) + 1];
?? ??? ?strcpy(title, the_title);
?? ??? ?writer = new char[strlen(the_writer) + 1];
?? ??? ?strcpy(writer, the_writer);
?? ?}
?? ?~book()
?? ?{
?? ??? ?delete[] title;
?? ??? ?delete[] writer;
?? ?}
?? ?int numOfPages()const
?? ?{
?? ??? ?return num_pages;
?? ?}
?? ?/*一、概念
?? ?當const在函數名前面的時候修飾的是函數返回值,在函數名后面表示是常成員函數,
?? ?
?? ?? 該函數不能修改對象內的任何成員,只能發生讀操作,不能發生寫操作。
?? ??? ?二、原理:
?? ??? ?我們都知道在調用成員函數的時候編譯器會將對象自身的地址作為隱藏參數傳遞給函數,
?? ??? ?在const成員函數中,既不能改變this所指向的對象,也不能改變this所保存的地址,
?? ??? ?this的類型是一個指向const類型對象的const指針。*/
?? ?const char* thetitle()const
?? ?{
?? ??? ?return title;
?? ?}
?? ?const char* thewriter()
?? ?{
?? ??? ?return writer;
?? ?}
};
class teachingMaterial :public book
{
?? ?char * course;
public:
?? ?teachingMaterial( char* the_title, int pages, char* the_writer, const char* the_course)
?? ??? ?:book(the_title,pages,the_writer)
?? ?{
?? ??? ?course = new char[strlen(the_course) + 1];
?? ??? ?strcpy(course, the_course);
?? ?}
?? ?~teachingMaterial()
?? ?{
?? ??? ?delete[] course;
?? ?}
?? ?const char* theCourse()const
?? ?{
?? ??? ?return course;
?? ?}
};
int _tmain()
{
?? ?teachingMaterial a_book("C++語言程序設計", 299, "張三", "面向對象的程序設計");
?? ?cout << "教材名: " << a_book.thetitle() << endl;
?? ?cout << "頁數: " << a_book.numOfPages ()<< endl;
?? ?cout << "作者: " << a_book.thewriter() << endl;
?? ?cout << "相關課程: " << a_book.theCourse() << endl;
}
轉載于:https://www.cnblogs.com/huninglei/p/5435869.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: Android Studio Gradl
- 下一篇: 读《系统虚拟化-原理与实现》-第一章