C++编程:解析静态成员函数的使用要点

需积分: 15 1 下载量 17 浏览量 更新于2024-08-24 收藏 8.66MB PPT 举报
"对静态成员函数的用法说明" 在C++编程中,静态成员函数是一个重要的概念,它在类的设计和实现中起着关键的作用。静态成员函数与非静态成员函数有着显著的区别,主要体现在以下几个方面: 首先,静态成员函数与类的实例(对象)无关。这意味着它们不依赖于特定的对象实例进行调用。就像描述中提到的,你可以通过类名加上作用域操作符(::)直接调用静态成员函数,无需创建对象。例如,对于一个名为` MyClass` 的类,你可以这样调用静态成员函数`MyClass::myStaticFunction()`。 其次,静态成员函数不包含隐含的`this`指针,因为它们不与特定的对象绑定。因此,它们无法访问非静态数据成员,除非这些成员是通过参数传递的。静态成员函数可以直接访问类中的静态数据成员,因为静态数据成员是所有类对象共享的。然而,如果需要访问非静态数据成员,静态成员函数可以接受对象作为参数,然后通过这个参数来间接访问非静态成员。 在设计类时,静态成员函数常常用于实现与类的实例无关的功能,如工具函数、常量计算或者作为类的工厂方法。它们可以用来初始化或管理类的静态数据成员,这些成员通常用于保存类级别的状态,而不是特定对象的状态。 C++语言本身具有丰富的特性,从简单的结构化编程到面向对象编程,再到泛型编程,它都支持。C++的发展历程,正如描述中所述,是从早期的BCPL和B语言演进而来,最终形成了强大的C语言,而C++则在其基础上增加了面向对象的特性,如类、继承、多态等,使得程序设计更加灵活且易于复用。 C++的特色包括其结构化和低级语言的特点相结合,提供了高效的代码执行和良好的可移植性。丰富的运算符集,包括位运算符,使得C++适合处理底层的硬件交互。同时,C++支持多种数据结构,如数组、链表、树等,这使得它能够构建复杂的数据结构和算法。 然而,C++的灵活性也意味着它的学习曲线相对较陡。对于初学者来说,理解和调试C++程序可能会遇到挑战,因为语法的松散可能导致错误难以发现。尽管如此,一旦掌握了C++的基础和语法规则,就能够编写出高效且可维护的代码,这也是许多开发者选择C++作为开发工具的重要原因。
2023-07-08 上传

int main(void) { const unsigned char *point; u16 i=0; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ // uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú // KEY_Init(); //°´¼ü³õʼ»¯ AT24CXX_Init(); //IIC³õʼ»¯ OLED_init(); point= &picture_tab[0]; TIM_OCInitTypeDef TIM_OCInitStructure; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //LED¶Ë¿Ú³õʼ»¯ TIM3_Int_Init(4999,7199);//10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½5000Ϊ500ms TIM4_PWM_Init(10000-1,72-1); //72M/72=1MHz¼ÆÊýƵÂÊ,ÖØ×°ÔØÖµ while(1) { OLED_ShowString(0,30,"21221054",16); OLED_ShowString(0,15,"2023/5/18",16); OLED_ShowChinese(0,0,0,16,1); OLED_ShowChinese(16,0,1,16,1); OLED_ShowChinese(32,0,2,16,1); delay_ms(1000); OLED_Refresh_Gram(); //¸üÐÂÏÔʾµ½OLED if(++i > 3) { LED1=!LED1;//ÌáʾϵͳÕýÔÚÔËÐÐ i=0; } while(1) { u16 u16tmp; u16tmp += 500; if(u16tmp > 10000) u16tmp=0; //³õʼ»¯TIM4 Channe3 PWMģʽ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //Ñ¡Ôñ¶¨Ê±Æ÷ģʽ:TIMÂö³å¿í¶Èµ÷ÖÆģʽ2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //Êä³ö¼«ÐÔ:TIMÊä³ö±È½Ï¼«ÐÔ¸ß TIM_OCInitStructure.TIM_Pulse = u16tmp; TIM_OC3Init(TIM4, &TIM_OCInitStructure); //¸ù¾ÝTÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIM4 OC3 LED2=!LED2; //LED3=!LED3; delay_ms(300); } } }这段代码问题如下:declaration may not appear after executable statement inblock,TIM OCINITTYPEDEF TIM OCINITSTRUCTURE,请修改这个问题

2023-06-09 上传