C++语言基础
宽窄存储
知乎:
https://www.zhihu.com/people/wu-gen-52-4
展开
-
关于C++中三种继承方式的讨论(公有继承,私有继承,保护继承)
公有继承,保护继承,私有继承(1) 在派生类中:三种派生方式下,都是只有基类的私有成员不能被访问。(2) 关于基类成员的访问属性:公有派生:基类各成员的访问属性均不变,基类的私有成员在派生类中不能被访问,也即被隐藏了,但这并不等于说基类的私有成员不能由派生类继承。 私有派生:基类各成员的访问属性均变成私有类型,基类的私有成员被隐藏。保护继承原创 2013-11-21 09:58:19 · 1925 阅读 · 0 评论 -
关于C++中的Const常量
一. 为什么需要常量 (1)如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦:1. 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。2. 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。3. 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。 (2)尽量使用含义直观的常量原创 2014-07-20 10:13:19 · 1537 阅读 · 0 评论 -
若类中有指针型数据成员,类的几个函数的重写
当类中有指针成员变量时,类的构造函数,拷贝构造函数,赋值函数必须进行重写,以求为指针成员变量开辟独立的内存空间。 下面以赋值函数为例进行说明: (1)对于类的赋值导致的构造函数需要重写的原因 进行讨论一番,如下(C++教程242页): Cname o1; Cname o2(”ding”)//通过重载构造函数为该指针变量赋了初值 o1=原创 2014-03-03 17:14:54 · 2156 阅读 · 0 评论 -
怎样构造一个正确高效的C++的类的构造函数
类的构造函数看似简单,实则很有玄机,在构造一个类的构造函数时,只要遵循以下几步,便可以建立出一个正确的高效的构造函数: 1.了解C++编译器默默编写并调用了哪些函数,若不想使用编译器自动生成的函数, 就该明确拒绝(effctive c++条款5,6) 2.定义的构造函数不能指定其返回值的类型,也不能指定为void类型。 3.若要用类定义对象,则构造原创 2014-03-03 17:01:22 · 1565 阅读 · 0 评论 -
怎样构造一个正确高效的C++的类的拷贝构造函数和赋值函数
拷贝构造 1. 了解C++编译器默默编写并调用了哪些函数,若不想使用编译器自动生成的函数,就该明确拒绝(effctive c++条款5,6)2. 拷贝构造函数的参数可以是一个或者多个,但做起的第一个参数必须是类的引用对象,需要注意的是:一旦定义了拷贝构造函数, 则隐式的默认拷贝构造函数便不再有效了,并且隐式的默认构造函数也不再有效了。3原创 2014-03-03 17:26:48 · 760 阅读 · 0 评论 -
纯虚函数与内联函数
http://blog.csdn.net/zy1691/article/details/3606128最近有个朋友研究了一下虚函数内联的问题,我也对这个问题产生了兴趣,发现网上也有好多讨论这个问题的,众说纷纭,于是花了点时间研究了一下。自己在vc下做了一些实验,通过观察各种情况下汇编代码,以及了一些资料的记载得出以下结论:虚函数是可以内联的,据我所知有3种情况会内联展开:1.“虚函转载 2013-12-11 17:17:26 · 1170 阅读 · 0 评论 -
关于C以及C++中指针的深入理解
int *p;char *p1;int i=25;int j = ‘w’;p=&i; p1=&j; 1.指针的基本概念指针就是在内存空间中开辟了一个区域,然后在这个区域中存放东西,那么首先就要提出两个问题:(1)开辟了多大区域? 如果你的电脑是32位机,那么你的电脑内存的地址长度就是32位,则开辟的是能装32地址长度的区域,也即原创 2013-10-19 10:29:16 · 772 阅读 · 0 评论 -
数组编译时出错error C2057: expected constant expression,以及解决办法
#include using namespace std; void main(){ int i=10; int a[i];}编译时提示错误:error C2057: expected constant expression原因:i是个变量,一直要到运行期才被分配内存,才会有值,所以编译期的时候它还没有值,故而编译时会出错。解决办法一:采用原创 2013-11-28 19:46:41 · 52643 阅读 · 0 评论 -
c++中变量的内存分配问题
下面是我自己对变量内存分配的一些理解,可能理解的不太正确,我写这篇文章的目的也主要是为了抛砖引玉,如果大家觉得我有什么不对的地方,请帮我指出来,谢谢! (1)全局类对象:在编译时期就被放置于data segment中并且内容为0,但constructor一直要到程序激活时才会实施,这说明的是全局类对象的内存在编译时已经分配好,并且被默认设置为0. (上述是源自深度探索c++对象242页原创 2013-11-24 08:42:23 · 821 阅读 · 0 评论 -
关于C++对象的成员变量的布局问题
(1) 同一个access section中,较晚出现的members在classobject中有较高的地址,各个members并不一定得连续排列,什么东西可能介于两个members之间?--比如members的边界调整。 (2) C++ Standard允许编译器将多个access section之中的datamembers自由排列,不必在乎它们出现在class声明之中的次序,不原创 2013-10-18 21:47:15 · 880 阅读 · 0 评论 -
STL中各容器之函数总结
一.序列和关联非共有函数所有标准库共有函数 (构造,相关属性,迭代器,插入与删除,比较,swap)其中operator>,operator>=,operator均不适用于priority_queue顺序容器和关联容器共有函数(1) 序列容器都提供5种相同的构造方法;关联容器都提供3种相同的构造方法(2) 还有insert插入函数(序列容器有3个相同版本的插入。关联容原创 2014-08-07 11:06:02 · 1522 阅读 · 0 评论