C++
xiaoshengqdlg
这个作者很懒,什么都没留下…
展开
-
C++中的对象的赋值和复制
对象的赋值如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象。这里所指的对象的值是指对象中所有数据成员的值。对象之间的赋值也是通过赋值运算符“=”进行的。本来赋值运算符“=”只能用来对单个的变量赋值,现在被扩展为两个同类对象之间的赋值,这是通过对赋值运算符的重载实现的。实际上这个过程是通过成员复制来实现的,即将一个对象的成员转载 2013-12-30 13:08:19 · 734 阅读 · 0 评论 -
c++内存分布
书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到转载 2016-05-10 17:14:57 · 316 阅读 · 0 评论 -
C++自定义 operator new
拨开自定义operator new与operator delete的迷雾 C++允许用户通过自定义operator new和operator delete的方式来更改new与delete表达式的某些行为,这给了程序员定制内存管理方案的自由。但是享受这种自由的时候必须遵守一定的规范,具体可以参见《Effective C++ 2nd》的相关条款。本文补充解释一些特别容易引起误解的问题。转载 2015-09-11 09:44:12 · 1294 阅读 · 0 评论 -
文章标题
这里写代码片namespace Test1{public class BaseClass{public BaseClass(){Console.WriteLine("基类的构造函数被继承");}}public class ChildClass : BaseClass{}class Program{static void Main(string[] args){Child转载 2015-09-09 14:51:09 · 363 阅读 · 0 评论 -
C++构造函数的继承
一、基类没有定义构造函数的情况1、派生类也可以不定义构造函数,全部采用默认的构造函数,此时,派生类新增成员的初始化工作可以用其他公有函数来完成。2、如果只有派生类定义构造函数,只需要构造派生类对象即可,对象的基类部分使用默认构造函数来自动创建二、基类中存在构造函数1、基类中存在不带参数的构造函数。如果基类定义了构造函数,而且该构造函数没有参数,那么它可以隐式的被继承转载 2015-09-09 14:52:23 · 563 阅读 · 0 评论 -
C++中虚函数
内存模型描述的是程序中各变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存取出变量这样的低层细节.不同平台间的处理器架构将直接影响内存模型的结构. 首先介绍一下C++中有继承关系的类对象内存的布局: 在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。转载 2015-08-28 13:31:11 · 587 阅读 · 0 评论 -
std:map用法
std::map用法 STL是标准C++系统的一组模板类,使用STL模板类最大的好处就是在各种C++编译器上都通用。 在STL模板类中,用于线性数据存储管理的类主要有vector, list, map 等等。本文主要针对map对象,结合自己学习该对象的过程,讲解一下具体用法。本人初学,水平有限,讲解差错之处,请大家多多批评指正。 map对象所实现的功能跟MFC转载 2015-08-27 15:12:51 · 501 阅读 · 0 评论 -
C++类成员函数
c++的两大特色是多态和模板。其中多态是通过继承和虚函数来实现的,其中虚函数是通过每个对象里面的虚表来实现的。如果这个对象的类有虚函数,那么这个类就有一张虚表,存的是每个虚函数的入口地址,而这个类的每个对象,都会有一个4字节的指针,指向这张虚表,这个就是虚指针。上面一段话很多人都知道,但是如果问普通成员函数,编译器是怎么找到它的入口地址的呢?也就是说,怎么进行调用?为什么A类一个foo函数转载 2015-08-27 14:21:10 · 457 阅读 · 0 评论 -
C++中的 extern "C"
比如说你用C开发了一个DLL库,为了能够让C++语言也能够调用你的DLL输出(Export)的函数,你需要用extern"C"来强制编译器不要修改你的函数名。通常,在C语言的头文件中经常可以看到类似下面这种形式的代码:C代码 #ifdef __cplusplus extern "C" { #endif /**** some declaration or so转载 2015-07-31 10:23:49 · 488 阅读 · 0 评论 -
(转)C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显转载 2014-04-11 14:11:29 · 371 阅读 · 0 评论 -
关于C++的private继承问题
C++有三种继承方式:公有继承,私有继承,保护继承这里只对其中私有继承做个知识笔记,以防忘记。private: 关键字意味着除了该类型的创建者和类的内部成员函数之外,对象及子类都不能访问。(这里注意,即使该类的对象都不能直接访问哦,只有通过对象的内部成员函数才可以访问)当一个类B私有继承类A的时候,A中的公有成员和保护成员以及私有成员在B类中都是私有成员,所以导致B类的对象不能原创 2014-01-16 11:09:41 · 734 阅读 · 0 评论 -
运算符重载
一、什么是运算符重载所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。现在要讨论的问题是: 用户能否根据自己的需要对C++已提供的运算符进行重载,赋予它们新的含义,使之一名多用。譬如,能否用“+”号进行两个复数的相加。在C++中不能在程序中直接用运算符“+”对复数进行相加运算。用户转载 2014-02-07 11:26:23 · 678 阅读 · 0 评论 -
C++虚拟继承
原文地址:http://blog.csdn.net/jackystudio/article/details/17877219菱形继承是多重继承中跑不掉的,Java拿掉了多重继承,辅之以接口。C++中虽然没有明确说明接口这种东西,但是只有纯虚函数的类可以看作Java中的接口。在多重继承中建议使用“接口”,来避免多重继承中可能出现的各种问题。1.菱形继承先看一下菱形继承长什么样转载 2014-01-16 13:38:38 · 667 阅读 · 0 评论 -
关于C++虚函数的重要知识点
见《程序员面试宝典》一书 P123原创 2014-01-16 09:41:00 · 665 阅读 · 0 评论 -
C++复制构造函数详解(深拷贝,浅拷贝)
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sharp] view pla转载 2014-01-02 10:21:45 · 603 阅读 · 0 评论 -
隐式类类型转换
原文:http://blog.csdn.net/honpey/article/details/9018429C++ Primer中有这样一句话:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个转换。这句话用下面一段代码表示为:[cpp] view plaincopyclass A { A(B b);//单个实参的构造函数 fu转载 2013-12-31 10:01:07 · 570 阅读 · 0 评论 -
构造函数初始化列表
转自http://blog.csdn.net/gzshun从概念上讲,可以认为构造函数分两个阶段进行:1.初始化阶段;2.普通的计算阶段。(计算阶段由构造函数函数体中的所有语句组成)不管成员是否在构造函数初始化列表中显示初始化,类类型的数据成员总是在初始化阶段初始化。初始化发生在计算阶段的开始之前。建议:使用构造函数初始化列表注:必须对任何const或引用类型成员以及没转载 2013-12-30 15:12:30 · 527 阅读 · 0 评论 -
C++ 避免隐藏继承而来的名称
关于C++中继承这个概念相比大家都很熟悉,那么子类究竟能从父类继承到哪些东西,哪些东西又是子类继承不到的呢?可能很多人都会觉得父类所有的东西都会被子类继承,包括成员函数和成员变量,否则就违背了“父子关系”这字面上的意思,其实不然,首先我们先看一小段简单的代码,这段代码很容易理解点击(此处)折叠或打开#include iostream>usin转载 2016-06-28 16:29:28 · 904 阅读 · 0 评论