C++面向对象编程<一>:简介
2016-02-21 20:20
525 查看
C++历史
C++有不同的版本,如C++89,C++11等,当然如今应用最广的是C++89。其中C++由C++语言和C++标准库组成的,标准库是很重要的部分。
目标
学会写基于对象(Object Based )和面向对象(Object Oriented),简单的说:
基于对象就是面对单一的class的设计
面向对象是多重class的设计,得注重考虑类与类之间的关系。
class的两个经典分类:
C++ without pointer members
C++ with pointer members
C++与C的区别
C:数据和函数分开
C++:数据和函数一体,从而形成一个类,类可以实例化很多对象
头文件
为防止重复声明,头文件的防御式声明格式如下:
头文件的基本布局格式如下:
class的声明
栗子:Complex(复数类)的声明
使用如下
(1)数据一般是private,函数可以是private(内部处理数据)、public(供外界调用)、protected;而在外界private数据不能直接在访问,需通过public函数调用间接访问;
(2)有些函数可以直接在类里面定义,这种成员函数自动成为inline函数候选人,也可以显示声明inline函数,即使这样函数不是成员函数。inline函数和宏很相似,但又不一样,有着宏的优点,却没有宏的缺点;但不一定你在类里面定义的函数都会被编译器当作inline函数处理。
class template模板简介
用模板来写complex类,如下:
使用如下
可以看出class template的好处:可以减少代码的重复编写(功能一样,仅数据类型不一样)
C++有不同的版本,如C++89,C++11等,当然如今应用最广的是C++89。其中C++由C++语言和C++标准库组成的,标准库是很重要的部分。
目标
学会写基于对象(Object Based )和面向对象(Object Oriented),简单的说:
基于对象就是面对单一的class的设计
面向对象是多重class的设计,得注重考虑类与类之间的关系。
class的两个经典分类:
C++ without pointer members
C++ with pointer members
C++与C的区别
C:数据和函数分开
C++:数据和函数一体,从而形成一个类,类可以实例化很多对象
头文件
为防止重复声明,头文件的防御式声明格式如下:
#ifndef _COMPLEX_ #define _COMPLEX_ //声明 #endif
头文件的基本布局格式如下:
#ifndef _COMPLEX_ #define _COMPLEX_ #include <cmath> class ostream; class complex; //前向声明 complex& _doapl (complex* ths, const complex& r); class complex //类-声明 { ... }; complex::function //类-定义 #endif _COMPLEX_
class的声明
栗子:Complex(复数类)的声明
class complex { public: complex (double r = 0, double i = 0) : re(r), im(i) {} complex& operator += (const complex&); double real () const { return re; } double imag () const { return im; } private: double re, im; friend complex& _doapl (complex*, const complex&); }
使用如下
complex c1(2,1); complex c2;
(1)数据一般是private,函数可以是private(内部处理数据)、public(供外界调用)、protected;而在外界private数据不能直接在访问,需通过public函数调用间接访问;
(2)有些函数可以直接在类里面定义,这种成员函数自动成为inline函数候选人,也可以显示声明inline函数,即使这样函数不是成员函数。inline函数和宏很相似,但又不一样,有着宏的优点,却没有宏的缺点;但不一定你在类里面定义的函数都会被编译器当作inline函数处理。
class template模板简介
用模板来写complex类,如下:
template<typename T> class complex { public: complex (T r = 0, T i = 0) : re(r), im(i) {} complex& operator += (const complex&); T real () const { return re; } T imag () const { return im; } private: T re, im; friend complex& _doapl (complex*, const complex&); }
使用如下
complex<double> c1(2.5,1.5); complex<int> c2(2,6);
可以看出class template的好处:可以减少代码的重复编写(功能一样,仅数据类型不一样)
相关文章推荐
- 《c++primer》学习随笔——预处理器变量
- Effective C++学习记录
- Effective C++学习记录
- POJ2388——Who's in the Middle
- 【C++】For、While、do···while循环
- neuq oj 1051: 谭浩强C语言(第三版)习题6.7
- C/C++工程DLL中接口的设计
- C/C++工程DLL中接口的设计
- C++ Primer Plus Chapter4
- C++ Primer阅读心得(第十六章)
- sort c++ double
- C++引用
- C++对C的增强
- c与c++不同的总结
- 二级指针
- leetcode刷题系列C++-valid sudoku
- 【C/C++学院】0904-boost智能指针/boost多线程锁定/哈希库/正则表达式
- c++ imshow(img)
- 1027. Colors in Mars (20)
- c/c++中内存分配