C/C++
胡育诚
这个作者很懒,什么都没留下…
展开
-
C/C++中const关键字详解
1 问题描述2 解答 const int *p1;//(1) 关键字const出现在星号左边 表示被指物是常量,而指针不是常量,可以不必须初始化 intconst*p2=&i; //(2)ok ,p2被取i的地址 p2=&j;//(3)ok,p2取j的地址 int*constp3=&i;//(4) 出现在星号右边,表示指针自身是常量,必须初始化,这里初始化为原创 2017-03-27 21:30:54 · 406 阅读 · 0 评论 -
&a+1详解
&a[0]:指的是a[0]的地址&a[0]+1:指的是以a[0]的地址为起始,将指针向下移动a[0]所属类型的字节数,此处为向下移4个字节(int),即为a[1]&a+1:与上面类比,指的是以a的地址为起始,将指针向下移动a所属类型的字节数,此处为向下移4*5个字节(int[5]),即为数组a后面紧跟着一个类型、长度跟a一样的数组的首地址 &a是对数组取地址,其类型为i原创 2017-03-28 11:15:23 · 4629 阅读 · 1 评论 -
C++虚函数
1.只有用virtual修饰的函数才能动态绑定 ,才有多态性 2.如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数本人类型定义的版本(c++prime 中文版第四版 p497) 因为在构造子类的时候,首先回去调用父类的默认构造函数,此时子类还是未初始化的,所以不可能调用子类函数析构函数(destructor)也是一种成员函数,但它的作用与构造函原创 2017-03-28 11:35:38 · 226 阅读 · 0 评论 -
C++深拷贝与浅拷贝
编译器在生成默认拷贝构造函数的时候使用的浅拷贝 上面被注释掉的程序就是编译器自动添加的部分。 从而导致在sayHello中向参数x传递值时,调用了bitwise copy的拷贝构造函数,使得x对象和b对象中的值完全一致,包括p指针的值,在x离开作用域(也就是sayHello函数结束),x发生析构,调用delete 销毁了指针p,同时在main函数结束原创 2017-03-29 16:58:44 · 261 阅读 · 0 评论 -
c++中&含义
在C++中,&既有引用又有取地址,其实他们的区别可以用一句话概括:=号左边是引用,=号右边是取址。比如 int a=3; int &b=a;//引用; int *p=&a; //取地址引用b,它是变量a的引用,即别名,&在此不是求地址运算,而是起标识作用,引用声明完毕后,原创 2017-03-30 14:58:55 · 11340 阅读 · 0 评论 -
Struct 和 Union区别
题目1:有如下结构体struct A{ long a1; short a2; int a3; int *a4;};请问在64位编译器下用sizeof(struct A)计算出的大小是多少? 内存对齐成员对齐有一个重要的条件,即每个成员按自己的方式对齐。其对齐的规则是:每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数(这里默认是8字节)中较小的一个对原创 2017-03-31 20:18:28 · 496 阅读 · 0 评论