小码哥C++_面向对象
类
C++中可以使用struct、class来定义一个类
#include<iostream>
using namespace std;//class Person {// //成员变量
// int age;
// //成员函数
// void run() {// cout << "Person is running" <<age<<endl;
// }
//};struct Person {int age;//C++ struct可以定义函数 void run() {cout << "Person is running" << endl;}
};
int main() {//用类创建对象Person person;person.age = 10;person.run();return 0;
}
- struct和class的区别
struct的默认成员权限是public
class的默认成员权限是private
C++编程规范
每个人都可以有自己的编程规范,没有统一的标准,没有标准答案,没有最好的编程规范
全局变量:g_ globe
成员变量:m_ member
静态变量:s_ static
常量:c_ constant
使用驼峰标识
对象的内存布局
如果类中有多个成员变量,对象的内存又是如何布局的?
this
#include<iostream>
using namespace std;struct Person {int age;//C++ struct可以定义函数 void run() {cout << "Person is running" <<age<< endl;}
};
int main() {//思考:person1的age是存放在person1的内存中,person2的age是存放在person2的内存中//run()是放在struct的内存中,它们在调用run()方法时是直接通过调用地址值来调用run()方法的。//但是它们调用run()时,为什么打印的结果不同?Person person1;person1.age = 10;person1.run();Person person2;person2.age = 20;person2.run();return 0;
}
上述代码,person.age是存放在栈空间,所调用的run()方法时放在代码区。
so,代码区的person.run()访问到了栈空间的age。
按照以上描述,可以这样设计:提供一个指针来找到age所对用的栈空间。
这个指针就是this。this在调用方法时是一个隐式参数,不用我们去编写,编译器自动在方法中生成并通过对象传到方法里面。所以,不同对象this对应的是自己的地址值。this指向了函数的调用者。
◼ 可以利用this.m_age来访问成员变量么?
不可以,因为this是指针,必须用this->m_age
再看看多个变量的情况。有连续的存储空间。
原理:
1.从指针中取出对象的地址;
2.利用对象的地址+成员变量的偏移量计算出成员变量的地址
int main() {Person person;Person *p = &person;p->age = 10;p->height = 180;p->weight = 140;return 0;
}Person *p = &person;010C1FA2 lea eax,[person] 010C1FA5 mov dword ptr [p],eax
p->age = 10;010C1FA8 mov eax,dword ptr [p] 010C1FAB mov dword ptr [eax],0Ah
p->height = 180;010C1FB1 mov eax,dword ptr [p] 010C1FB4 mov dword ptr [eax+4],0B4h //eax+4 连续存储空间。eax是p的地址值。
p->weight = 140;010C1FBB mov eax,dword ptr [p] 010C1FBE mov dword ptr [eax+8],8Ch
思考:
封装
堆空间
#include<iostream>
using namespace std;struct Person {public:int age;int height;int weight;};
int main() {//申请int *p = (int *)malloc(4);//返回首地址,double型的*p = 10;//释放free(p);//可以自由支配自己申请的内存空间char* p = (char*)malloc(4);//赋值首地址*p = 10;*(p + 1) = 11;*(p + 2) = 12;*(p + 3) = 13;return 0;
}
new/delete 申请堆空间
new int —不初始化
new int()—初始化为0
new int(1)—初始化为1
int main() {//申请 new deleteint* p = new int;*p = 10;delete p;//向堆空间申请char类型的数组char* p = new char[4];delete[] p;return 0;
}
memset
zz
小码哥C++_面向对象相关推荐
- 零基础轻松学python pdf 小码哥_零基础轻松学Python
零基础轻松学Python电子书 Python之父Guido van Rossum力荐的Python门书.本书以通俗易懂的语言.好玩有趣的案例让读者轻轻松松.循序渐地从零始掌握Python 3 编程.本 ...
- naarray查询 swift_从入门到精通Swift编程(完整 未加密 小码哥) [16.3G]
目录:/从入门到精通Swift编程(完整 未加密 小码哥) [16.3G] : U! s1 a8 i- s+ O, c7 i ┣━━01-基础语法.汇编初探 [367.2M]# D% l* ...
- 百度松果 小码哥考研小技巧 (概率期望)
题目描述 要考研了,小码哥非常焦急,他要开始背英语单词,每个单词的长度是lil_ili ,小码哥有pipipi的概率认识这个单词,小码哥要从一个有nnn个单词的总清单里按顺序的背单词,小码哥有一个认 ...
- 你好2017! 再见2015, 再见小码哥!
一根筋教育总监李南江致全体同仁的一封公开信 各位同仁,同学们: 大家好! 2015年的今天我发布了一篇日志"决定加入一个全新的IT培训品牌小码哥(中英双语版)", 怀揣着对教育的热 ...
- 03小码哥通讯录(数据存储)
// // XMGContact.m // 小码哥通讯录 #import "XMGContact.h"@implementation XMGContactstatic NSStri ...
- 小码哥iOS--玩转【斗鱼直播APP】系列之直播总体概览
直播总体概览 概述 直播的现状 2016年,是一个直播年.直播行业快速发展,同时也滋生了大大小小上千家相关的公司. 中国互联网络信息中心发布的报告显示,截至今年6月,我国网络直播用户规模达到3.25亿 ...
- 小码哥考研技巧(求背单词长度的最大期望)
输入: 3 100 6 100 8 100 10 输出: 326.12 考点:1.求最大期望的话需要对n个单词的长度和认识概率进行动态数组排序 2.对精度有所要求 理论解析:无论小码哥有没有背到认识的 ...
- 小码哥iOS拓展班2期
小码哥iOS拓展班2期,视频全套不加密,有FM,直播,RAC,汇编项目,源码文档齐全. 注: 视频分为破解版和重录版,破解版码哥课堂和直播项目不全:重录版所有的视频和文档都是齐全的,只有直播项目第一天 ...
- 可怜的小码哥 马蹄集
可怜的小码哥 难度:黄金 时间限制:1秒 巴占用内存:128M 提瓦特大陆上有一个贫穷的占星术士小码哥,出于占星术的要求,他时常要解 决一些困难的数学问题.这天,他有遇到一个难题:对于一给定的素数集合 ...
- css动画唯美背景,小码哥-利用CSS3渐变实现唯美背景图
原标题:小码哥-利用CSS3渐变实现唯美背景图 CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平稳的过渡. 以前,你必须使用图像来实现这些效果.但是,通过使用 CSS3 渐 ...
最新文章
- 关于Vue实例的生命周期created和mounted的区别
- C++对象模型3——vptr的位置、手动调用虚函数、从汇编代码看普通调用和多态调用
- 华为云计算之储存基础知识
- 湘乡江南计算机学校,湘乡职业中等专业学校2021年招生录取分数线
- [Qt]用QItemDelegate的来修改QStandardItem字体颜色
- PHP面向对象之领域模型+数据映射器
- python七大神级插件_Maya神级插件 SOuP 和OpenVDB
- 质量管理体系文件分类
- Javascript中五种定义对象的方法
- 计算机上网络怎么连接,手机怎么连接电脑上网
- 笔记本电脑共享WiFi
- 干货分享!一份你不知道的武汉Web前端开发学习攻略
- PHP梯度计算金额,数字图像的梯度概念以及计算(the gradient of the image)
- 匹配字符串-正则表达式
- 线程sta模式_STA和MTA线程模式的区别
- 页面底部copyright部分制作过程中遇到的问题,解决以及总结
- linux下通过user-config.jam指定编译器编译boost
- ubuntu Git 使用教程
- ppk和pem文件互转
- 单源路径分支界限java_java单源最短路径算法
热门文章
- 【python】类型约束(类型提示的作用)
- 什么是机器学习(漫画版)
- 尚德机构退费难的问题
- 会说话的汤姆猫纪念徽章藏品上线,集齐赢实物盲盒!
- vue项目中使用ts入门
- html5 今日头条视频播放,今日头条app设置自动播放视频的方法
- ParticleEmitter旧粒子系统退役 2018新粒子系统
- 公认最好的鸿蒙系统,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...
- 怎么把计算机隐藏文件显示出来,隐藏文件夹怎么显示出来
- Tomcat,Servlet,JSP之间是什么关系?