面向对象思想的载体-类(class)
类的定义
不同的书籍上对类的定义大同小异,核心的点都是强调类是一种数据和与该数据相关方法的有限集合。并作为一个整体的结构而存在。在内存分配上用户在创建类模板的时候系统不分配内存,只有在创建对象的时候为模板中的数据分配相应的内存,并把函数保存成统一的接口,这里如果有多个对象调用函数编译器怎么知道函数返回给谁呢,this指针。编译器为每个对象在编译的时候添加this指针。
类的结构形式,在C++里有两种 class 和 struct。
以class为例:
#ifndef _CLASS_
#define _CLASS_
template<class T>
class Example{ ///类名声明
class body
public:/访问权限:成员函数,类对象,子类对象,友元访问
/*构造函数*/
Example(const T &_m_data = 0):m_data(_m_data){}
private:/访问权限:成员函数,友元访问 本身对象不能访问
/*数据必须是private*/
T m_data;
template<class T> //定义模板友元函数
friend T get_data(const test<T> & Test); 这里的参数传递统统使用引用
protected: /访问权限:成员函数,友元访问,子类函数访问
};
template<class T>
inline
T get_data(const test<T> &Test) 友元函数的定义
{
return Test.m_data;
}
#endif
关于友元函数还有一个性质,相同class的各个object互为友元。
这句话的意思就是我们可以通过同class的对象调用他的private值。