欢迎来到天天文库
浏览记录
ID:42021907
大小:280.50 KB
页数:29页
时间:2019-09-06
《《走向C++之路》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、走向C++之路WindyWinterwindy@briefdream.com#includemain(t,_,a)char*a;{returnt<1?main(*a,a[-t],"=a-1kj3gnm:qebh_cf*i^+?,()[?qzyrjuvcdefgh,!kbpolwxs'.tmain(")&&a[-t]&&main(t-1,_,a):t/2?_==*a?putchar(32[a]):_%115<36
2、
3、main(t,_,a+1):main(0,t,"+b:s?#mw{ty}t(x1{
4、~?y<#q?(*#{k)}r
5、sh?vts){?w*#yku:!zym^t
6、x
7、
8、xtutu!uz
9、#}t");}面向对象的C++C++为此而生类Goodmorningclass.类是C++的新特性,为适应面向对象的程序设计而提出;在C中,已经有了结构的概念;类与结构的最大不同之处在于——不仅可以包含成员变量(常量),还可以包含成员函数。当然,类还包括一些其他的特性:成员变量、成员函数的访问权限;构造函数;析构函数;拷贝构造函数;隐式类型转换;……一个著名的类classperson{private:stringm_name;intm_age;stringm
10、_email;voidupdate();public:person();~person();stringget_namecard();};personwjj;域运算符::Well,oneisjustnotenough.stringperson::get_namecard(){returnm_name+m_email;}#includeintmain(){std::cout<<“wjjisasmartgirl.”<11、员”——this,表示对象自身;this只能在该类的内部使用,与不指明this没有区别:this->m_namem_name;this->update()update();如果修改get_namecard()的声明为:stringget_namecard()const;get_namecard()将不能更改任何成员变量的值,在函数内部:this指针变成指向常量的指针;任何成员变量被附加const属性。这种声明主要用于指明该函数不会更改成员变量的值。构造函数constructor没有返回值类型,与类同名的函数被认为是构造函数;它的作用就是——构造一个对象12、。如何构造?person():m_name(“WangJingjing”),m_age(0){…}person(constperson&t):m_name(t.m_name),m_age(t.m_age),m_email(t.m_email){…}person(stringname,intage):m_name(name),m_age(age){…}构造函数It’ssomethingnotthatnew.如果将某个构造函数声明为private,则这个构造函数将无法使用。一般来说,这样做的目的是阻止编译器生成缺省的构造函数。只带有一个参数的构造函数表明了一种可能13、的隐式类型转换:string(constchar*s);new与malloc的区别在于:前者创建对象,后者分配空间。析构函数destructor没有返回值,名字是~,没有参数的函数是析构函数。构造函数可以有多个,析构函数只能有一个。它的作用是销毁一个对象。如果没有声明析构函数,编译器将合成默认析构函数:对于内置类型,释放其空间;对于类类型,调用其析构函数。实际上,上面两步是编译器附加在任何析构函数最后的两步。因为没有办法显式“释放空间”和调用析构函数。析构函数只能在delete时和离开该对象的生存域时被自动调用。也存在将析构函数声明为14、private的情况。静态成员Steady,steady…static关键字也可以修饰类的成员:classperson{…staticintpopulation;staticintget_population();};被修饰的成员叫做类的静态成员,是这个类的属性,不是某个对象的属性。访问用::intperson::population=0;person::get_population();运算符重载It’sfullyoperational.C++不仅提供了对函数的重载,也提供了对运算符的重载。运算符可以视为特殊的函数。一个简单的运算符重载如下:单目运算符:15、operator[](
11、员”——this,表示对象自身;this只能在该类的内部使用,与不指明this没有区别:this->m_namem_name;this->update()update();如果修改get_namecard()的声明为:stringget_namecard()const;get_namecard()将不能更改任何成员变量的值,在函数内部:this指针变成指向常量的指针;任何成员变量被附加const属性。这种声明主要用于指明该函数不会更改成员变量的值。构造函数constructor没有返回值类型,与类同名的函数被认为是构造函数;它的作用就是——构造一个对象
12、。如何构造?person():m_name(“WangJingjing”),m_age(0){…}person(constperson&t):m_name(t.m_name),m_age(t.m_age),m_email(t.m_email){…}person(stringname,intage):m_name(name),m_age(age){…}构造函数It’ssomethingnotthatnew.如果将某个构造函数声明为private,则这个构造函数将无法使用。一般来说,这样做的目的是阻止编译器生成缺省的构造函数。只带有一个参数的构造函数表明了一种可能
13、的隐式类型转换:string(constchar*s);new与malloc的区别在于:前者创建对象,后者分配空间。析构函数destructor没有返回值,名字是~,没有参数的函数是析构函数。构造函数可以有多个,析构函数只能有一个。它的作用是销毁一个对象。如果没有声明析构函数,编译器将合成默认析构函数:对于内置类型,释放其空间;对于类类型,调用其析构函数。实际上,上面两步是编译器附加在任何析构函数最后的两步。因为没有办法显式“释放空间”和调用析构函数。析构函数只能在delete时和离开该对象的生存域时被自动调用。也存在将析构函数声明为
14、private的情况。静态成员Steady,steady…static关键字也可以修饰类的成员:classperson{…staticintpopulation;staticintget_population();};被修饰的成员叫做类的静态成员,是这个类的属性,不是某个对象的属性。访问用::intperson::population=0;person::get_population();运算符重载It’sfullyoperational.C++不仅提供了对函数的重载,也提供了对运算符的重载。运算符可以视为特殊的函数。一个简单的运算符重载如下:单目运算符:
15、operator[](
此文档下载收益归作者所有