const char * 、char const *、 char * const 三者的区别

C/C++ 中关于以下三种定义:const char *ptr;char const *ptr;char * const ptr;现整理三者之间的区别与联系。一、const char *ptr;定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向...

2018-03-28 23:19:40

阅读数 43

评论数 0

C++中的mutable关键字

mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。    在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。    我们知道,如果类的成员函数不会改变对象的...

2018-03-28 23:07:11

阅读数 47

评论数 0

C++必须使用【初始化列表】初始化数据成员的三种情况

类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员;2.进入构造函数后在构造函数中执行一般赋值与计算。使用初始化列表有两个原因:原因1.必须这样做:《C++ Primer》中提到在以下三种情况下需要使用初始化成员列表:   情况一、需要初始化的数据成员是对象的情况...

2018-03-27 23:02:46

阅读数 1292

评论数 0

C++的四种转型小结

1 概念分析   static_cast static_cast应该是适用范围最广的,适用于很多隐式转换,基类指针与子类指针的相互转换,或者添加const属性,去掉const属性应该用const_cast   double a = 10.23; int b = static_cast&...

2018-03-24 15:36:54

阅读数 137

评论数 0

关于C++全局变量和静态变量初始化的一些总结

1.全局变量    全局变量无疑要在main函数开始前执行完成,但可细分为在编译时和在运行时初始化,即static initialization和dynamic initialization。 static initialization           静态初始化按照我的理解,是针对那些较为简...

2018-03-22 23:33:59

阅读数 275

评论数 0

bss段

1. 理论BSS(Block Started by Symbol)用来存储未初始化的全局变量和静态变量,全局变量或静态变量值为0或NULL(对于指针变量而言)的通常会被编译器认为未初始化,属于静态内存分配区,不会占用程序文件空间,不存储这些变量在外存上,但是还是会占用一部分空间,这些空间用来标识未...

2018-03-21 22:53:59

阅读数 256

评论数 0

C/C++中volatile的用法

代码编译环境:Windows7 32bits+VS2012。volatile是“易变的”、“不稳定”的意思。volatile是C/C++的一个较为少用的关键字,它用来解决变量在“共享”环境下容易出现的读取错误的问题。1.volatile的作用定义为volatile的变量是说这变量可能会被意想不到地...

2018-03-18 23:04:35

阅读数 429

评论数 0

静态函数能否为virtual或者const函数

1. virtual与静态函数C++中,静态成员函数不能被声明为virtual函数。例如,下面的程序会编译失败。#include<iostream> class Test { public: // 编译错误:static成员函数不能声明...

2018-03-18 16:21:57

阅读数 134

评论数 0

僵尸进程与孤儿进程

    在被誉为UNIX编程“圣经”的一书《unix环境高级编程》中有提到僵尸进程和孤儿进程。不少同学对这两个概念会混淆,这篇文章总结一下。    在unix/linux系统中,大多情况下,子进程是通过父进程fork创建的,注:系统调用fork,是一个比较有意思系统调用,它调用一次,返回两个值,失...

2018-03-13 11:53:35

阅读数 33

评论数 0

《深度探索C++对象模型》读书笔记

前 言 Stanley B.Lippman1.   任何对象模型都需要的三种转换风味:ü        与编译器息息相关的转换ü        语言语义转换ü        程序代码和对象模型的转换 2.   C++对象模型的两种解释ü        语言中直接支持面向对象程序设计的部分ü    ...

2018-03-12 23:59:49

阅读数 65

评论数 0

编译器合成复制构造函数

定义:      只有单个形参,该形参是对本类类型对象的引用(常用const修饰),这样的构造函数成为复制构造函数。使用方式:(1)显示使用----用一个同类型的对象初始化该对象时;(2)隐式使用----将该类型的对象传递给函数或从函数返回该类型对象时。三种类型的复制构造函数:*bitwise c...

2018-03-12 20:19:02

阅读数 81

评论数 0

《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记

之前一直对C++内部的原理的完全空白,然后找到《Inside The C++ Object Model》这本书看了下, 感觉收获很大,因为书写得比较早,有些知识应该要更新,但是还是值得好好研读,由于该书的内容给人比较散的感觉,所以一直想找个时间整理一下,遂成此文,虽然都是抄书上的,但是却让我有了温...

2018-03-10 21:16:22

阅读数 130

评论数 0

第二章构造函数语义学——关于bitwise copy semantics

  关于这个问题,第一遍看的时候比较晕,不知道这个什么 bitwise copy是个什么东西,其实很简单,就是 位逐次拷贝(我靠,一句好犀利的废话)。额,具体来说呢,就是对 源类中的成员变量 中的每一位 都逐次 复制到 目标类中。具体的内容接着看。首先让我们看看这个概念是怎么出来的。书中第50页的...

2018-03-10 18:55:12

阅读数 77

评论数 0

C++经典面试题

1,关于动态申请内存 答:内存分配方式三种: (1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。 全局变量,static变量。 (2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建, 函数执行结束时这些存储单元自动被释放。 栈内存分...

2018-03-10 11:18:45

阅读数 227

评论数 0

虚基类的作用

1 概念    首先还是先给出虚继承和虚基类的定义。虚继承:在继承定义中包含了virtual关键字的继承关系;虚基类:在虚继承体系中的通过virtual继承而来的基类,需要注意的是:CSubClass : public virtual CBase {}; 其中CBase称之为CSubClass的虚...

2018-03-07 22:10:34

阅读数 188

评论数 0

C++ new关键字深入理解

“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创...

2018-03-05 20:34:47

阅读数 58

评论数 0

定制自己的new和delete:operator new 和 operator delete

new和delete不同用法基本用法int * aptr = new int(10);delete aptr, aptr = nullptr;上面的代码是我们最基本也是最常见的使用new和delete的方式,当编译器运行int * aptr = new int(10); 这行代码时,其实是分为两个...

2018-03-04 17:08:10

阅读数 43

评论数 0

规定不能创建抽象基类的对象的原因

抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较上层。      (1)抽象类的定义:      称带有纯虚函数的类为抽象类。      (2)抽象类的作用:      抽象类的主要作用是将有关的操作作为结果接口组织在一个继承层次结构中,由它来为派生类提供一个公共的根...

2018-03-02 21:50:52

阅读数 190

评论数 0

C++代理类

1.为什么c++需要代理类考虑如下的一个小实例:假设有一个类,命名为RoadVehicle,代表陆地上的车辆,简单的定义如下://定义陆地上的车辆 class RoadVehicle { public: RoadVehicle(){} //默认构造函数,容许声明RoadVe...

2018-03-01 20:10:28

阅读数 202

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭