尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

C++对象模型和this指针Project5

C++对象模型和this指针Project5
📅 发布时间:2026/6/20 1:03:24

成员变量和成员函数分开储存

非静态成员变量 属于类的对象上
静态成员变量 非静态成员函数 静态成员函数 不属于类的对象
空对象占用内存为1
c++编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存的位置
每个空对象也应该有一个独一无二的内存地址

this指针概念(project5 filename01)

this指针指向被调用的成员函数所属的对象
this指针隐含每一个非静态成员函数内的一种指针
this指针不需要定义,直接使用即可
this指针的用途:
当形参和成员变量同名时,可用this指针来区分
在类的非静态成员函数中返回对象本身,可使用return *this

include

using namespace std;
class Person {
public:
Person(int age) {
//this 指针指向 被调用的成员函数 所属的对象
this->age = age;
}
int age;
Person& PersonAddAge(Person& p) {
//this指向p2的指针,而*this指向的就是p2这个对象本体
//如果你返回值是一个Person值传递会创造一个新的对象 如果用引用的方式就会一值相加
this->age += p.age;
return *this;
}

};
//解决名称冲突
void test01() {
Person p1(18);
cout << p1.age << endl;
}
//返回对象本身用*this
void test02() {
Person p1(10);
Person p2(10);
p2.PersonAddAge(p1).PersonAddAge(p1);
cout << p2.age << endl;

}
int main() {
test01();
test02();
system("pause");
return 0;
}

类和对象-对象特性-空指针访问成员函数(project5 filename02)

C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针
如果用到this指针,需要加以判断保证代码的健壮性

include

using namespace std;
//空指针调用函数
class Person {
public:
void showClassName() {
cout << "这是一个Person类" << endl;
}
void showPerson() {
//解决方法 如果有this指针
if (this == NULL) {
return;
}
cout << m_age << endl;//这里隐含了一个this指针
}
int m_age;
};
void test03() {
Person* p = NULL;//指针person指向为空

p->showClassName();
p->showPerson();//输出不了 

}
int main() {
test03();
system("pause");
return 0;
}

类和对象-对象的特性-const修饰成员函数

常函数
成员函数后加const后我们称为这个函数为常函数
常函数内不可以修改成员属性
成员属性声明时加关键字mutable后 在常函数中依然可以修改
常对象:
声明对象前加const称该对象为常对象
常对象只能调用常函数

include

using namespace std;
//常函数
class Person {
public:
//this指针的本质是 是指针常量 指针的指向是不可以修改的
//const Person*const this;
//在成员函数后面加上const 修饰的是this指向 让指针指向的值也不可以修改
void showPerson() const{
//m_Age = 100;
m_B = 100;
//this = null //this指针不可以修改指针的指向
}
void func() {
m_Age = 100;
}
int m_Age;
mutable int m_B;//特殊变量 即使在常函数中 也可以修改这个值 加上mutable
};
void test04() {
Person p;
p.showPerson();
}
//常对象
void test02() {
const Person p;
//p.m_Age = 100;
p.m_B = 100;//特殊值,在常对象下也可以修改
p.showPerson();//
//p.func();//常对象只能调用常函数
}
int main() {

system("pause");
return 0;

}

相关新闻

  • 2025年10月25日,工信部人才交流中心PostgreSQL认证考试完成!
  • 微擎商户的流量增长秘籍:低成本高转化的种草新玩法
  • 勿以小恶而为之

最新新闻

  • DeepTutor终极指南:打造您的个人AI学习助手
  • MC9S08SH32内存架构与安全机制:从寻址优化到Flash编程实战
  • 2026北京靠谱的上门回收字画公司推荐榜单 - 品牌排行榜
  • 重庆修补家具大理石/瓷砖/岩板/木门补漆推荐良匠千艺2026本地口碑榜 - 我叫一
  • 终极指南:用Parsec VDD免费扩展你的Windows虚拟显示器
  • 2026年新发布山东靠谱的罐罐酸奶加盟项目深度剖析:为何谷物全书罐罐酸奶成为市场焦点? - 品牌鉴赏官2026

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号