c++ 部分基础知识 ---- (1)
2017-09-18 10:02
253 查看
c++ 基础
new:堆空间分配,系统不会自动回收,栈区内存会自动释放new 指针:
动态分配的对象是默认初始化的,则意味着内置类型或组合类型的对象的值是无意义的,而类类型通过默认构造函数进行初始化。
new数组:
new分配的对象,都是默认初始化的,但是可以对数组进行值初始化,在后面加()
int* a = new int[10];//没有初始化 int* a = new int[10]();//初始化为0
对齐法则
1.整体空间是最大成员占用字节的整数倍
2.内存按照结构体中的数据成员先后排序,并且当前地址应该是以当前成员所占用空间的整数倍。
数据类型 | 举例 | 占用空间 | 说明 |
---|---|---|---|
struct | strcut{char a,double b,int c, char d}; | a/b=8,c/d=4; | 向下对齐 |
union | union{int i;unsigned char ch[2];} | 4 | 最大占用 |
继承类的数据成员 | class A{ public:int a;char b; }; class B:public A{ public: char c; }; | A= 8,B=12 | B要与A对齐 |
enum | enum m{int x,int y}; | m = 4 |
大端存储模式:高位字节存储低地位内存中,低位字节存储高位。
小端相反
union enumName { int i; unsigned char ch[2]; }; int _tmain(int argc, _TCHAR* argv[]) { enumName student; student.i=0x1234; char b=student.ch[0];//小端,b= 34;大端b = 12; }
数据类型说明
enum{int x,int y = 4,int z}m; m = 0; y = 4; z = 5; x = 0;
enum:枚举
若是外部定义,则为0;若是内部定义,因为没有初始化则为默认值。
基础数据类型
char 1字节short 2字节,int,float,long 4字节,double 8字节
指针 4字节(32位,在64位下8字节)
作用域:全局变量>静态变量
字符串数组:
sizeof,计末尾的0,strlen,不计算0
作为函数参数传递的时候,已经退化为指针了
类:
一个空类占用一个字节,这个类中有其他的占用空间成员,这一个字节就不计算(注:类函数成员不占用空间)
虚函数存在一张虚函数表,需要4个字节,若类成员对象为指针则为4个字节,需要考虑字节对齐
static成员变量属于类域,不属于实例变量
类相关
深(重载运算符进行深拷贝操作)/浅拷贝与赋值操作
;//没有重载 = A a; A b; a = b;//赋值操作 A c = b;//浅拷贝操作 ;//重载 = A a; A b; a = b;//深拷贝操作 A c = b;//浅拷贝操作
方法重载
1.必须是同一个类
2.方法名(函数名)一样
3.参数类型不一样或参数数量不一样
方法重写
方法名相同,参数类型相同
子类返回类型小于等于父类返回类型(返回类型可能为一个类)
子类抛出异常小于等于户内方法抛出异常
子类访问权限大于等于父类访问权限
父类指针指向子类实例对象
调用普通方法,会调用父类的,调用虚函数,才回调用子类的(子类中被重写的虚函数中动态绑定的,与实例对象的本身有关)
转载来源
http://www.cnblogs.com/xiaoyi115/p/3622135.html
部分来自牛客网
相关文章推荐
- C++基础知识部分之一
- HTML开发语言基础和c++少部分知识
- C++基础知识部分之四
- C++基础知识部分之五
- C++基础知识部分之二
- C++基础知识部分之三
- C++ FAQS 翻译3 (第一部分 预备知识 第二章 C++语法和语义基础)
- C++ 函数模板基础知识
- javascript中BOM部分基础知识总结
- C/C++基础知识:typedef用法小结
- C++中的基础相关知识之static
- jQuery基础知识第二部分
- C++基础知识总结
- 计算机网络-C++基础知识,面试复习题
- c++基础知识(C++Primer4th第四版中文版)
- C++基础入门知识
- C++面试之基础知识集锦
- Jack整理的Win32汇编基础知识 - [C/C++]
- C++中的基础相关知识之内联函数inline,extern,条件编译
- C/C++学习笔记:基础知识4