ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

# C++类与对象核心全解(成员函数_const_初始化列表_运算符重载_静态_编译器优化)# C++类与对象核心全解(成员函数_const_初始化列表_运算符重载_静态_编译器优化)

# C++类与对象核心全解(成员函数_const_初始化列表_运算符重载_静态_编译器优化)# C++类与对象核心全解(成员函数_const_初始化列表_运算符重载_静态_编译器优化) # C类与对象核心全解成员函数/const/初始化列表/运算符重载/静态/编译器优化标签C、类与对象、面向对象、初始化列表、运算符重载、静态成员、RVO优化简介本文极简总结C类与对象所有高频核心知识点适配期末、复试、面试考点搭配极简示例代码通俗易懂。1. 成员变量 成员函数成员变量描述对象属性存储在对象空间每个对象独有。成员函数描述对象行为代码全局共享不占对象空间自带this指针。classPerson{public:intage;// 成员变量voidshow(){}// 成员函数};2. 构造函数 析构函数 默认构造构造函数对象创建自动调用用于初始化与类名同名、无返回值。析构函数对象销毁自动调用用于资源释放一个类仅能有一个析构函数。默认构造用户未手写任何构造函数时编译器自动生成只要手写任意一个构造函数编译器将不再生成默认构造。Person(){}// 默认构造~Person(){}// 析构函数3. 初始化列表核心考点解决问题const成员变量、引用成员无法在构造函数体内赋值仅能通过初始化列表完成初始化。初始化列表执行时机早于构造函数函数体执行是C成员初始化的最优方式。classPerson{constintid;public:Person(intx):id(x){}// const成员唯一初始化方式};4. const 成员函数在成员函数末尾添加const修饰代表该函数不会修改类的任何成员变量。const成员函数内部的this指针为常量指针无法修改对象属性。const修饰的对象仅能调用const成员函数无法调用普通成员函数。voidshow()const{}5. 运算符重载 赋值重载 引用返回运算符重载重构运算符逻辑让自定义类支持常规运算符运算。赋值重载 operator默认浅拷贝无法处理堆内存资源需手动重载实现深拷贝同时判断自赋值。引用做返回值避免对象拷贝开销支持链式调用代码更高效。Personoperator(constPersonother){if(thisother)return*this;// 防止自赋值return*this;}6. 静态成员函数核心特点面试高频考点静态成员函数没有 this 指针静态函数属于类不属于任何对象全局共享。无this指针无法访问类的普通成员变量和普通成员函数。仅能访问静态成员变量、静态成员函数。调用方式类名::静态函数名()推荐、对象.静态函数名()staticvoidfunc(){}7. 友元函数了解即可友元函数可突破类的访问权限直接访问类的私有成员。破坏面向对象封装性实际开发中尽量少用仅特殊场景使用。friendvoidtest();8. 内部类在一个类的内部定义的类称为内部类内部类是完全独立的类可直接访问外部类的静态成员。无法直接访问外部类的普通成员需借助外部类对象。classOuter{public:classInner{};// 内部类定义};9. 匿名对象 编译器优化匿名对象无变量名的临时对象生命周期极短仅存在于当前语句语句执行完毕立即调用析构函数销毁。编译器 RVO/NRVO 优化编译器自动优化临时对象拷贝直接在目标对象内存空间构造对象省去拷贝构造和析构的开销大幅提升代码运行效率。Person(){}全文核心总结成员函数为所有对象共享成员变量为每个对象独立独有。const成员变量仅能通过初始化列表初始化const成员函数禁止修改对象成员。赋值重载需处理自赋值问题引用返回可实现链式调用、减少拷贝。静态成员函数无this指针仅可操作类的静态成员。友元破坏封装性、内部类独立于外部类、匿名对象瞬时销毁、编译器自动优化临时对象拷贝开销。
返回列表