您的位置:首页 > 编程语言 > C语言/C++

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=12B要与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

部分来自牛客网
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: