C++构造函数实现类内B对象初始化

需积分: 14 2 下载量 192 浏览量 更新于2024-08-19 收藏 8.81MB PPT 举报
在谭浩强的《C++程序设计》一书中,章节标题为"构造函数与对象成员",着重讨论了如何在类的设计中处理对象间的依赖关系。在C++中,类A可能包含一个或多个其他类B的对象。例如,如下的代码所示: ```cpp class B { // 类B的成员定义 }; class A { int x, y; B b1, b2; // 类A包含两个类B的对象 // 构造函数的使用 public: A(int x, int y) : x(x), y(y), b1(), b2() { // 使用带初始化列表的构造函数 // 在构造函数内部,会自动调用b1和b2的默认构造函数 } }; ``` 构造函数(Constructor)在C++中扮演着关键角色,它是在创建对象时自动调用的特殊函数,用于初始化新创建的对象。当类A的对象被实例化时,同时创建了类B的对象b1和b2。由于类A需要对类B的对象进行初始化,因此在其构造函数内部调用了类B的构造函数,确保了对象成员的正确设置。 在谭浩强的课程中,他强调了C++语言的历史和发展,从早期的BCPL和B语言,到C语言的诞生,再到C++的出现,这些语言的发展反映了编程语言的不断进化。C++继承了C语言的优点,如结构化编程、灵活性、高效性和可移植性,同时还引入了面向对象特性,如封装、继承和多态,这使得在大型项目中管理和维护更加便捷。 尽管C++的语法相对灵活,但这也意味着初学者可能会遇到学习曲线较陡的问题,特别是在调试阶段。然而,对于熟悉C++语法规则的专业人员,他们能够利用这种自由度编写出高质量且可移植的程序。在设计类和构造函数时,理解类之间的依赖关系,以及如何正确初始化成员对象,是C++编程中的核心内容之一。 谭浩强的教程指导读者理解如何在C++中使用构造函数来初始化复杂对象,包括嵌套类和对象,以及如何利用C++语言的特点来构建高效的、结构化的程序。这对于掌握C++编程并提高程序质量至关重要。

优化以下代码:#include <iostream> #include<string.h> using namespace std; class Book { private:     char bookname[30];     char authers[30];     char publishing_house[40];     int pages;     float price; public:     char getbookname();     char getauthers();     char getpublishing_house();     int getpages();     float getprice();          void setbookname(char *a);     void setauthers(char *a);     void setpublishing_house(char *a);     void setpages(int a);     void setprice(float a);     Book(char*a,char*b,cahr*c,int d,float e)     {         strcpy(bookname,a);         strcpy(authers,b);         strcpy(publishing_house,c);         pages=d;         price=e;     } }; char getbookname() {     char*a=bookname;     return a; } char getauthers() {     char*a=authers;     return a; } char getpublishing_house() {     char*a=publishing_house;     return a; } int getpages() {     int a=pages;     return a; } float getprice() {     float a=price;     return a; } void setbookname(char *a) {     strcpy(bookname,a); } void setauthers(char *a) {     strcpy(authers,a); } void setpublishing_house(char *a) {     strcpy(publishing_house,a); } void setpages(int a) {     pages=a; } void setprice(float a) {     price=a; } int main() {      Book a(char a="《C++程序设计》",char b="谭浩强编制",char c="清华大学出版社",d=484,e=36.00);      Book b(char a="《吹牛大王历险记》",char b="拉斯伯等编著",char c="天津人民出版社",d=149,e=12.80);     cout<<a.getbookname()<<"  "<<a.getauthers()<<"  "<<a.getpublishing_house()<<"  "<<"页数:"<<a.getpages()<<"价钱:"<<a.getprice()<<endl;     cout<<b.getbookname()<<"  "<<b.getauthers()<<"  "<<b.getpublishing_house()<<"  "<<"页数:"<<b.getpages()<<"价钱:"<<b.getprice()<<endl;     return 0; }

2023-05-22 上传