C++学习笔记01之类的基本实现过程(头文件的防卫式定义, 具体类的定义和实现, 函数的传递类型和返回类型)
来源:互联网 发布:大唐 数据所 编辑:程序博客网 时间:2024/05/21 07:51
一、C++简介
首先,C++是一门从C语言(过程式编程语言)演化过来的面向对象的编程语言(OOP)。相对于其它的面向对象的编程语言,如Java、C#,C++具有性能优化和底层开发的特点。同时,C++目前发行的标准有C++98、C++11、C++14(最新的),但作为程序猿而言,目前使用最多的仍是C++98。从一门编程语言的学习角度来看 ,语言本身与其标准库是学习的重点。
二、头文件与类的声明
1. C与C++对比:
关于数据和函数 C++引入类和对象的概念
class分类:Complex和String(with pointer)
2. C++程序基本形式
几种文件格式:.h .cpp .hpp
头文件的防卫式声明:
#ifndef _COMPLEX_#define _COMPLEX_……#endifclass的声明:
准备数据和函数
三、构造函数
1.inline函数(内联)
2.访问级别(public, private, protected)
data和function不同,data一般有封装性
3.创建对象需要构造函数,构造函数名称一定与类的名称相同,无返回值
complex (double r = 0,double i = 0): re(r), im(i){ }4.函数的overloading
只是函数名相同,但编译器能识别它们;
四、参数传递与返回值
1.ctor(构造函数)一般放在public区
A::getInstance().setup();
2.const member functions(常量成员函数)
不会改变函数内部数据内容
3.参数传递
两种形式:pass by value or reference(to const)
4.返回值传递
pass by value or reference(to const)
5.friend(友元)
相同class的各个objects互为friends
五、操作符重载与临时对象
操作符重载 overloading
操作符可重新定义
1.成员函数
隐藏的this指针
传递者无需知道接受者是以reference形式接收
2.class body之外的各种定义(definitions)
inline 内联函数
3.非成员函数
(无this)temp object(临时对象)
type();
inline complexoperator + (const complex& x){ return x;}<<的重载:
ostream&operator << (ostream& os, const complex& x) // 传引用,速度快{ return os << '(' << real(x) << ',' << imag(x) << ')';}共轭复数:
inline complexconj (const complex& x){ return complex(real(x), -imag(x)); // (局部)临时对象}最后,总结上面Complex类的实现过程:
1.防卫式定义;
2.类的定义,有构造函数(初值列),那些数据,那些函数(成员函数和非成员函数),内联函数,友元函数;
3.函数的传递类型和返回类型。
- C++学习笔记01之类的基本实现过程(头文件的防卫式定义, 具体类的定义和实现, 函数的传递类型和返回类型)
- C++中函数定义返回类型和内部实现返回类型不同的原因
- C++中函数定义返回类型和内部实现返回类型不同的原因
- 关于C语言static定义函数类型的具体解释
- 关于C语言static定义函数类型的具体解释
- 关于C语言static定义函数类型的具体解释
- c++ primer 学习笔记:类之类的声明和定义
- typedef和函数类型的定义
- C_线性表(ADT)-串类型的定义和实现
- Object C 类的定义和实现
- Objective-C类的定义和实现
- DLL函数定义和函数实现写函数类型的不同, 引起不能使用Dll中的函数
- Oracle]分割字符串返回数组 (发现函数和类型的定义)
- C语言(变量的定义和类型的本质)
- 枚举类型的抽象方法定义实现
- 全局静态函数的定义和实现
- 使用@RequestMapping 定义处理器函数-支持的函数返回类型
- C++Template头文件和定义分开编译的问题
- C#对象间的协作和信息交换(六)利用事件(Event)广播消息
- Sitemesh 3 的使用及配置
- 第三周 项目四【顺序表应用 1】
- The Python Challenge Level 0-1 Solutions
- java经典问题算法大全
- C++学习笔记01之类的基本实现过程(头文件的防卫式定义, 具体类的定义和实现, 函数的传递类型和返回类型)
- 树莓派桌面任务栏 LXPanel 不小心删除恢复的教程
- 作为一个Android开发者,你所需要掌握的东西
- 关于Activity的启动模式
- 数据预处理之缺失值插补 — 基于R语言
- React Native实战(二):Android的打包
- java算法二
- PHP的验证码入门
- ubuntu install gcc 4.8