C++学习笔记3——类的封装(1)
封装:
1、把属性和方法进行封装。
2、对属性和方法进行访问控制。
class和struct的区别:
class和struct的唯一区别是默认的访问权限不一样。struct的默认访问权限是public,class的默认访问权限是private。
访问控制符:
1、public:成员在整个程序内可以被访问,public成员定义类的接口。
2、private:成员可以被类的成员函数访问,但不能被使用该类的代码访问,private部分封装了类的实现细节。
3、protected:成员可以被类和派生类访问,但不能被使用该类的代码访问。
类的构造函数:
1、构造函数的名字与类名相同。
2、构造函数在定义时可以有参数也可以无参,但没有任何返回类型的声明。
3、构造函数在变量定义时自动调用。
class Test
{
public:
Test() = default;//类中定义了有参构造函数后系统将不会产生默认构造函数,Test() = defualt可以重新产生默认构造函数。
Test(int num);
};
类的析构函数:
1、析构函数的名字与类名相同,名字头加~。
2、析构函数没有参数也没有任何返回类型的声明。
3、析构函数在对象销毁时自动被调用。
class Test
{
public:
~Test();
};
类的拷贝构造函数:
class Test
{
public:
Test(const Test &obj);//一种特殊的构造函数,用一个对象出事化另一个对象,也存在深浅拷贝问题,编译器提供的是浅拷贝
}; class Test2
{
public:
Test2(char name, int num);
Test2(char name) :Test2(name, ){} //委托构造函数
};
拷贝构造函数被调用的时机:
1. 当用类的一个对象去初始化该类的另一个对象(或引用)时系统自动调用拷贝构造函数实现拷贝赋值。
Test t1; Test t2(t1);
Test t3 = t1;
2. 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。
3. 当函数的返回值是类对象时,系统自动调用拷贝构造函数,同时返回一个匿名对象。
匿名对象的生命周期只存在于一行,当无类变量接时,将会直接调用析构函数;当有类变量接时,会直接将匿名变量转换成类变量。
类的组合:
class A
{
public:
A(int index)
{
this->a = a;
} private:
int a;
}; class B
{
public:
B(int a1Init, int a2Init) :a1(a1Init), a2(a2Init), b()//类的初始化列表,含有其他类(带有参构造函数)和const变量必须使用类的初始化列表进行初始化
{
;
} private:
A a1;
A a2;
const int b;
};
类的组合的调用顺序:
1、当类中有成员变量是其它类的对象时,首先调用成员变量的构造函数,调用顺序与声明顺序相同,之后调用自身类的构造函数。
2、析构函数的调用顺序与对应的构造函数调用顺序相反。
C++学习笔记3——类的封装(1)的更多相关文章
- 学习笔记 Java类的封装、继承和多态 2014.7.10
1.问题:toString()没搞懂? int a = 1; Integer aa = new Integer(a); //这是实现的过程 System.out.println("Hello ...
- C++学习笔记4——类的封装(2)
简介: 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.其中一元运算符有一个参数,二元运算符有两个参数. 可以被重载的运算符 + - * / % ^ ...
- python学习笔记4_类和更抽象
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- UML学习笔记:类图
UML学习笔记:类图 有些问题,不去解决,就永远都是问题! 类图 类图(Class Diagrame)是描述类.接口以及它们之间关系的图,用来显示系统中各个类的静态结构. 类图包含2种元素:类.接口, ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- .net学习笔记---HttpRuntime类
HttpRuntime在ASP.NET处理请求中负责的是创建HttpContext对象以及调用HttpApplicationFactory创建HttpApplication. 其定义如下: publi ...
- C++ Primer 学习笔记_57_类和数据抽象 --管理指针成员
复印控制 --管理指针成员 引言: 包括指针的类须要特别注意复制控制.原因是复制指针时.一个带指针成员的指针类 class HasPtr { public: HasPtr(int *p,int i): ...
随机推荐
- [Audio processing] 常见语音特征 —— LPC
共振峰产生的原理及其在音质上的体现,共振峰的分布位置是建立在声音产生媒介的共鸣物理结构基础上的(Resonant Physical Structure). 无论是人声还是乐器,它们的声音特性都源自 ...
- DCL双检查锁机制实现的线程安全的单例模式
public class MyObject { private volatile static MyObject myObject; private MyObject(){} public stati ...
- Linux网络编程echo多线程服务器
echo_server服务器多线程版本 #include <unistd.h> #include <stdlib.h> #include <stdio.h> #in ...
- Android代码混淆
混淆器(ProGuard) --- 混淆器通过删除从未用过的代码和使用晦涩名字重命名类.字段和方法,对代码进行压缩,优化和混淆.结果是一个比較小的.apk文件,该文件比較难进行逆向project.因此 ...
- Java数学表示式解析工具- jeval
这个包能够为我们提高高效的数学表达式计算. 举个样例:这个是我们策划给出的游戏命中率的一部份计算公式 是否命中=a命中率 – (b等级 – a等级) * (命中系数(6)* b闪避率 / 100)+3 ...
- Qt 学习之路 :Qt 模块简介
Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改.Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中.Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化.本节 ...
- 从页面底部向上弹出dialog,消失时逐渐向下(转)
我想实现一个效果,从底部向上逐渐弹出.如下图所示: 1.点击 显示 按钮时,一个dialog对话框从底部慢慢向上弹出. 2.关闭dialog时, dialog缓慢的移动向底部消失.很平滑的效果. ...
- discuz! X3 门户文章添加字段
1. 首先需要去数据表里[llgp_portal_article_title]手动添加需要添加的字段. (注意: 数据表前缀依据自己的设置而定) 2. 修改模版template\default\por ...
- (转)Vim用法小结
这是我转的一些vim基本用法,可能对初用者会有帮助,独乐乐不如众乐乐,是吧! Vim一般的Unix和Linux下均有安装. 三种状态 Command: 任何输入都会作为编辑命令,而不会出现在屏幕上 ...
- python函数的使用和返回值
#coding=utf-8 def a(): i=1a() #函数的返回值,用return语句实现 #一个返回值的情况def test(): i=7 return iprint test() #多个返 ...