标签:深度 对象模型 type 面向对象 支持 idg 需要 模板类 父类
1,声明与定义。
//声明式如下:
extern int x; //对象式(变量式)声明
std::size_t numDigits(int number); //函数式声明
class Widget; //类声明
template<typename T> //模板类声明
class GraphNode;
//定义式如下:
int x; //对象的定义
std::size_t numDigits(int number) //函数的定义
{
...
}
class Widget //类的定义
{
...
};
template<typename T> //模板类的定义
class GraphNode
{
...
};
声明式,其实就是让编译器知道名称和类型。这样编译的时候就能够通过。
定义式,其实就是让编译器知道细节。这样在链接器连接的时候就能够找到对应的代码。
2,结构、类等都是程序员自定义类型,相比于int,它是自定义类型,而int是内置类型。所以他们都是类型。只有定义该类型的变量才会分配内存。
3,对于c++的类,类的对象存储的是类中描述的数据成员。这些数据成员可能是自己类中声明的,也可能是父类继承而来的。但类的对象中并没有存储成员函数。成员函数其实是所有对象共用的。调用的时候,会隐藏一个this指针传入成员函数用以区分是哪个对象调用了成员函数。
4,一个程序的设计可以有非常多种:面向对象还是面向过程。如果是面向对象的话,是通过继承类实现代码重用还是不通过继承。是否需要虚继承、是否需要虚函数、是否需要支持模板等等,还可以考虑使用宏来实现,速度比函数调用还要快。
5,c++的虚函数和虚基类会有内存上的开销。可以反思虚函数表。
6,
标签:深度 对象模型 type 面向对象 支持 idg 需要 模板类 父类
原文地址:http://www.cnblogs.com/zhoubiao20170424/p/7795635.html