首页 技术 正文
技术 2022年11月11日
0 收藏 462 点赞 2,288 浏览 909 个字

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,类的数据成员有两种类型:静态数据成员和非静态数据成员。类的成员函数有三种类型:静态成员函数、非静态成员函数、虚函数

7,深度探索c++对象模型 第一章

8,真正的c++对象模型:

深度探索c++对象模型 第一章

从图中可以看出,非静态数据成员以及一个虚表指针被包含在对象中。静态成员函数、非静态成员函数、静态数据成员都被放在对象外面。虚函数的地址则放在虚表中。

9,深度探索c++对象模型 第一章深度探索c++对象模型 第一章

指针的类型转换,不改变指针本身的值(是一个地址),而是改变编译器解释这个地址所指向的内存的方式。

10,深度探索c++对象模型 第一章深度探索c++对象模型 第一章深度探索c++对象模型 第一章

深度探索c++对象模型 第一章

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,904
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,430
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,247
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,058
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,690
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,727