C++对象必备构造函数:详解与应用

需积分: 9 5 下载量 50 浏览量 更新于2024-08-23 收藏 8.81MB PPT 举报
在谭浩强的经典C++教程中,一个重要的概念是关于对象的构造函数。构造函数是类的一个特殊成员函数,用于在创建新对象时自动初始化对象的状态。每个类都至少有一个构造函数,即使程序员没有显式定义,C++编译器也会为类自动生成一个默认的构造函数,称为缺省构造函数。例如,在提供的代码示例中,类`A`有一个空的构造函数`A()`,这意味着当声明`A a1, a2;`时,系统会为这两个变量自动分配内存并设置默认值。 如果用户没有提供自己的构造函数,系统生成的缺省构造函数会简单地为类中的所有成员变量赋予默认值。然而,如果类中有特定的初始化需求,程序员应显式地定义构造函数,以便更好地控制对象的初始状态。例如,对于复杂的对象,可能需要初始化多个成员变量或者执行一些必要的设置。 C++作为一种结构化编程语言,支持面向对象编程(OOP),其继承了C语言的优点,如灵活性、高效性和可移植性,同时也引入了模板、继承、多态等高级特性。C++语言的设计初衷是为编写操作系统级的程序,如UNIX的内核,因此它的底层特性使其在系统编程领域表现出色。 然而,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 上传