C++封装的全部总结
类
类是对现实生活中一类具有共同特征的事物的抽象
类是面向对象程序设计实现信息封装的基础。
类是一种用户定义类型,也称类类型。
类的实例称为对象。
类的实质是一种数据类型
面向对象原则
以对象为中心,以谁做什么来表达程序的逻辑,对象的所以行为都通过调用函数来实现
封装
private : 只读属性,不可被外界修改
public :可被外界修改读取
内联函数
使用关键字inline定义,编译时将函数体代码和实参代替函数的调用语句,换句话说,省去了调用函数的过程,效率更高,速度更快,但那要求逻辑简单,不可太复杂,若太过复杂,加上inline也没有用
类内定义
整个函数都定义在类里面
类内定义的成员函数,编译器会将其优先编译为内联函数,即简单函数自动编译为内联函数
类外定义
同文件类外定义
注意:关于变量名的定义m_+数据类型+名称(更规范)
class Teacher {
public:
void setName(string _name);
string getName();
void setGender(string _gender);
string getGender();
void setAge(int _age);
int getAge();
void teach();
private:
string m_strName;
string m_strGender;
int m_iAge;
};
void Teacher::setName(string _name) {
m_strName = _name;
}
string Teacher::getName() {
return m_strName;
}
void Teacher::setGender(string _gender) {
m_strGender = _gender;
}
string Teacher::getGender() {
return m_strGender;
}
void Teacher::setAge(int _age) {
m_iAge = _age;
}
int Teacher::getAge() {
return m_iAge;
}
void Teacher::teach() {
cout<<"Teach"<<endl;
}
构造函数
内存分区:
栈区:int x = 0; int *p = NUll;
堆区:int *p = new int[20];
全局区:存储全局变量即静态变量
常量区:string str = “hello”;
代码区:存储逻辑代码的二进制
构造函数在对象实例化时被自动调用
构造函数与类同名
构造函数没有返回值
实例化对象时仅用一个构造函数
当用户没有定义构造函数时,编译器自动生成一个构造函数
C++封装的全部总结的更多相关文章
- [C#] 简单的 Helper 封装 -- RegularExpressionHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- iOS开发之App间账号共享与SDK封装
上篇博客<iOS逆向工程之KeyChain与Snoop-it>中已经提到了,App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SD ...
- Ajax实现原理,代码封装
都知道实现页面的异步操作需要使用Ajax,那么Ajax到是怎么实现异步操作的呢? 首先需要认识一个对象 --> XMLHttpRequest 对象 --> Ajax的核心.它有许多的属性和 ...
- 用C语言封装OC对象(耐心阅读,非常重要)
用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...
- 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...
- 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)
前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...
- 封装集合(Encapsulate Collection)
封装就是将相关的方法或者属性抽象成为一个对象. 封装的意义: 对外隐藏内部实现,接口不变,内部实现自由修改. 只返回需要的数据和方法. 提供一种方式防止数据被修改. 更好的代码复用. 当一个类的属性类 ...
- CSharpGL(29)初步封装Texture和Framebuffer
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...
- CSharpGL(7)对VAO和VBO的封装
CSharpGL(7)对VAO和VBO的封装 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入门参考 ...
- Swift -- 对AFN框架的封装
Swift -- 对AFN框架的封装 一.封装AFN的目的 简单的说: 解耦 日常工作中,我们一般都不会去直接使用AFNetWorking来直接发送网络请求,因为耦合性太强,假设有多个控制器都使用AF ...
随机推荐
- 在Centos7中安装Docker并实例化Mysql
首先 本文是一篇安装流程,从初始的Centos7安装Docker后实例化一个Mysql的整个流程,其中会包含一些需要注意的疑点和坑. 实例化的Mysql是将数据和配置保存在宿主机. 注意,在安装Doc ...
- $.ajax显示进度条
- 压力测试工具ab的使用
ab是Apache自带的HTTP压力测试工具,全称是ApacheBench 路径为\Apache\bin\ab.exe 参数文档: http://httpd.apache.org/docs/2.2/p ...
- sudo使用
/etc/sudo.conf /etc/sudoers /etc/sudoers.d/ /etc/sudo-ldap.conf /etc/sudoer sudo安全策略配置文件 Defaults re ...
- LDAP 在ubuntu14.04下的安装配置install and configure
https://help.ubuntu.com/lts/serverguide/openldap-server.html if error occurs in reinstall, try this: ...
- session的MaxInactiveInterval=0在tomcat6和tomcat8不同表现
在tomcat6中调用 request.getSession().setMaxInactiveInterval(0); 这个session会立即过期. 而在tomcat8中,同样的调用,会导致这个se ...
- ie6下按钮下边框消失不显示的问题
最近网站做改版,又发现一个ie6奇葩的问题,就一个很普通带边框的按钮,但在ie6中下边框不显示,ie7没有测试不知道是不是也不显示,其他浏览器正常 代码和预览效果如下: <style> b ...
- 静态库是.o文件的集合与弱符号
静态库是.o文件的集合. 静态库与弱符号的概念相关联. 在生成库文件时,不做强符号检查.
- vuejs组件参数校验
父组件向子组件传递一些参数,那么子组件有权对这些参数进行一个校验,这个就是组件参数校验 需求:父组件传递过来的必须是个字符串,这个要怎么去校验呢 <div id='root'> <c ...
- 简单的Nodejs模块
说千遍,道万遍,不如动手做一遍,我们实现一个node所谓的模块 看下上面的图,了解一下模块自始至终的一个流程,首先是创建模块,也就是一个入口的js文件,里面加了一些特定的功能,然后导出这个模块, ex ...