热文C++ primer学习笔记 第四章 表达式
表达式基础 重载运算符:当运算符作用在类类型的运算对象时,用户可以自行定义其含义。 左值和右值: c中原意:左值可以在表达式左边,右值不能。 c++:当一个对象被用作...
表达式基础 重载运算符:当运算符作用在类类型的运算对象时,用户可以自行定义其含义。 左值和右值: c中原意:左值可以在表达式左边,右值不能。 c++:当一个对象被用作...
using声明 * 使用某个命名空间:例如 `using std::cin`表示使用命名空间`std`中的名字`cin`。 * 头文件中不应该包含`using...
第二章 变量和基本类型 基本算数类型 * `char`: 8bits * `short`: 16bits * `int`: 16bits (在32位...
虽然Item 15:资源管理类需要提供对原始资源的访问中提到,最好不要提供隐式的类型转化。 但这条规则也存在特例,比如当我们需要创建数字类型的类时。正如double和in...
其实简单来说成员函数是在类中定义的函数,而非成员函数就是普通函数,就是不是在类中定义的函数,其中非成员函数比较典型的是友元函数。下面贴上一些其他的一些区别和理解: 成员函...
数据成员声明为私有可以提供一致的接口语法,提供细粒度的访问控制,易于维护类的不变式,同时可以让作者的实现更加灵活。而且我们会看到,protected并不比public更加...
我们发现,在C++中,有些成员函数返回的是对象,而有些函数返回的又是引用。 返回对象和返回引用的最主要的区别就是函数原型和函数头。 **Car run(const C...
C++继承了C默认传递方式为值传递的特性,那么对于一个值传递的函数,它的参数是被传进来变量的拷贝初始化的。拷贝是由拷贝构造函数生成的,而拷贝多是一个不经济的操作,至于为什...
在C++和其它面向对象的语言中,定义一个类就定义了一个新的类型。重载函数和操作符,内存的分配与释放,对象的构造与析构,全部掌握在你的手上。所以在设计类的时候,要像语言的设...
现在我们来到软件设计的话题中。软件设计就是让软件做你想做的事,软件设计一定需要接口(interface)设计,最后用C++实现。我们今天讨论可能是其中最重要的一条守则,把...
假设我们有如下函数: int priority(); //返回处理优先级 void processWidget(std::shared_ptr<Widget> pw, ...
看起来new与delete似乎是对应了,可是这样只会释放数组的第一个元素,其他99个对象则不会被释放,因为它们的析构函数没有被调用。 我们来看一下new和delete的工...
到现在我们一直在一个完美的世界里,资源管理类会帮你完成对资源的所有操作,自己不用关心资源管理类里面的原始资源。但现实是残酷的,有时我们依然需要直接接触资源管理类所封装的原...
如何使用auto_ptr和shared_ptr来管理基于堆(heap)的资源,但对于堆之外的资源,例如Mutex锁,智能指针就不再那么好用了,因此我们需要写自己的资源管理...
我们在学习编程时,经常能听到”资源”这个词。资源可能是一个很宽泛的概念,但总体来讲,资源是我们可以用来使用,并且使用完之后要返还给系统的东西。在C++中,资源多数是指动态...
C++有两种拷贝函数(copying function): 拷贝构造函数(copy constructor)和拷贝赋值操作符(copy assignment operat...
如果我们选择重载一个类的赋值运算符,要注意在自赋值时仍然能够正确工作。自赋值看起来像是不正确的调用方式, 但是在C++中这是合法的而且常常是不可识别的。例如:
C++的赋值操作符(assignment operator)有一个有趣的用法: int x, y, z; x = y = z = 15; ...
你在为某证券公司设计股市交易软件,需要有一个类用来表示股市交易: class Transaction{ ...
构造函数可以抛出异常。 C++标准指明析构函数不能、也不应该抛出异常。 在步入正题前,我们先来讲讲什么叫栈展开(stack unwinding),才能更好理解C++异常(...
位图是描述图像的最简单直观的一种方式,把图像横向分为等间距的W列,纵向分为等间距的H列,于是这个图像大小被定义为分辨率W*H。位图分为单色图和彩色图,区分方法是图片的一个...
画刷其实是一个像素大小为8*8的位图,用多个相同的位图对封闭图形的内部进行填充。 MFC的CBrush类封装了画刷对象,创建画刷时,首先定义一个画刷对象,然后调用Crea...
图形设备接口(Graphics Device Interface,GDI),把应用程序的函数调用传递给图形设备驱动程序,由设备驱动程序来执行与硬件相关的函数。GDI向应用...
使用AppWizard创建SDI和MDI的过程相似,主要区别是创建SDI时不生成CChildFrame类,CMainFrame类的基类为CMainWnd;而在创建MDI时...
文档和视图结构的优势就在于数据的管理与显示分离,数据总是要以一定的结构来存储,而视图负责数据的呈现。数据往往有多种呈现方式,例如一份报表,可以用表格的形式呈现,也可以用图...
MFC中提供了丰富的视类供开发者使用,下面对各个类进行介绍: 1) CView类是最基本的视类只支持最基本的操作。 2) CScrollView类提供了滚动的功能,你可以...
在程序运行时CWinApp将创建一个CFrameWnd框架窗口实例,而框架窗口将创建文档模板,然后有文档模板创建文档实例和视实例,并将两者关联。一般来讲我们只需对文档和视...
视类窗口是指程序运行后,显示信息的那一部分。对应的类是CXXXView(XXX表示项目名称)类,CXXXView类是派生于CView类,而CView类又派生于CWnd类。...
以下是我在最初学习VC时所常用的开发思路和方法,希望能对初学VC的朋友有所帮助和启发。 开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。 开发注重交...
MFC字符串操作类CString CString是用来表示可变长度的字符串的类。在MFC中,这个类的使用频率非常高。CString是MFC经过封装后特有的一种字符串类型,...
主要有4个部分组成: 1) 资源文件Resource.h:主要是定义资源的ID。 2) 预编译文件:可以用来解决头文件包含冲突的问题,定义一些需要全局性包含的文件。 3)...
从程序设计转化为软件设计,这是激动人心的时刻。这里面对的不再是黑色的、单调的控制台界面,而是一个崭新的环境。各种功能强大,界面漂亮的软件,将从你的手上诞生。软件开发的第一...
Windows操作系统提供了各种各样的函数,以方便我们开发Windows应用程序。这些程序是Windows操作系统提供给应用程序编程的接口(Application Pro...