摘要:
前言本文将探讨一下关于二维数组在内存中的存储和二维数组在参数传递时的使用。一、二维数组在内存中的存储如果定义一个这样的二维数组int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};则其在内存中的表示可能下面这样的。由上图可以看出,在内存中二维数组是按照... 阅读全文
随笔分类 - C++语法及杂项
C++静态成员变量和静态成员函数小结
2015-01-27 12:53 by itwolf, 276 阅读, 收藏,
摘要:
静态类成员包括静态数据成员和静态函数成员两部分。一 静态数据成员:类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1.静态数据成员的... 阅读全文
C++类的复制构造函数和赋值运算符
2015-01-18 21:09 by itwolf, 844 阅读, 收藏,
摘要:
前言:C++面向对象的编程过程中,凡是在类中运用到动态内存分配的时候总是会写一个显示的复制构造函数和赋值重载运算符,本文将结合C++ Primer Plus一书的内容分析下原因:一、在C++编程中如果没有编写下列成员函数,系统会自动的提供: (1)构造函数 (2)析构函数 (3)地址运算符 (4)赋... 阅读全文
C++初始化列表
2015-01-16 10:19 by itwolf, 786 阅读, 收藏,
摘要:
一、什么是初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段二、构造函数执行分为初始化和构造两个阶段,且初始化化阶段优先于计算阶段三、一个好的原则是,能使用初始化列表的时候尽量使用初始化列表因为初始化列表有时... 阅读全文
结构体struct和typedef后面接指针的含义
2014-12-11 22:02 by itwolf, 2324 阅读, 收藏,
摘要:
typedef struct file{...}FileInfo, *FileP;上述程序中定义了一个结构体,结构体的名字为file,并且给其指针 取个别名为FileP,所以后续程序中出现FileP就相当于是struct file * 阅读全文
C++中关于指针初始化和使用NULL的理解
2014-12-04 12:38 by itwolf, 10861 阅读, 收藏,
摘要:
1、严禁使用未被初始化的指针:C++创建指针的时候,只分配存储地址的内存,并不会分配存储数据的内存,所以指针可能指向任何位置。 (1)使用解除运算符(*)之前,一定要对指针初始化,否则若声明的指针刚好指向程序代码的位置会导致一些很隐蔽的错误。 (2)未被初始化之前禁止指针之间的赋值。例如:#incl... 阅读全文
(虚)继承类的内存占用大小
2014-12-01 09:06 by itwolf, 773 阅读, 收藏,
摘要:
(虚)继承类的内存占用大小首先,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 因此,如果用sizeof运算符对一个类型名操作,那得到的是具有该类型实体的大小。计算一个类对象的大小时的规律: 1、空类、单一继承的空类、多重继承的空类所占空间大小为:1(字节,下同); 2、一个类中,虚函数本... 阅读全文
为什么构造函数不能为虚函数
2014-11-30 10:08 by itwolf, 298 阅读, 收藏,
摘要:
1、从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀。所以构造函数没有必要是虚函数。虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过... 阅读全文
C++中变量自动初始化的问题
2014-11-28 10:51 by itwolf, 3400 阅读, 收藏,
摘要:
C++中有一些变量在如果没有赋初值会被编译器自动赋值为0,但有的变量又不会这样,而得到一个随机数,下面具体讨论一下:首先看一下C++中的几个存储区:1、栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区:一般由程序员分配释放, 若程序员不释放,... 阅读全文