摘要:
它们不关调用者的事:将数据成员设为私有的。简单的C语言形式的struct类型只是将一组值聚集在了一起,并不封装或者提供行为,只有在这种struct类型中才可以将所有数据成员都设成公用的。要避免将公用数据和非公用数据混合在一起,因为这几乎总是设计混乱的标志。
信息隐藏是优秀软件工程的关键。应该将所有数据成员都设为私有的,不管是现在,还是可以能发生变化的将来,私有数据都是类...
分类:
编程语言 时间:
2014-01-21 09:43:31
收藏:
0 评论:
0 赞:
0 阅读:
327
上篇博文谈到了C++函数重载在MFC类库中的一些体现,可能你会说这些我都知道。是的,上面那篇仅仅是个切入点,紧接上篇,我们来谈一下重载C++标准库函数时候会发生什么样的问题呢?接下来会通过重载MFC的MessageBox让你知道不一样的MFC。
一、messagebox的原始调用方法
我们随便新建一个MFC的对话框工程,先给出两种messagebox的调用方法,如下所示:
void...
分类:
编程语言 时间:
2014-01-21 09:38:06
收藏:
0 评论:
0 赞:
0 阅读:
510
多态(Polymorphism)是面向对象的核心概念,本文以C++为例,讨论多态的具体实现。C++中多态可以分为基于继承和虚函数的动态多态以及基于模板的静态多态,如果没有特别指明,本文中出现的多态都是指前者,也就是基于继承和虚函数的动态多态。至于什么是多态,在面向对象中如何使用多态,使用多态的好处等等问题,如果大家感兴趣的话,可以找本面向对象的书来看看。
为了方便说明,下面举一个简单的使...
分类:
编程语言 时间:
2014-01-21 09:34:31
收藏:
0 评论:
0 赞:
0 阅读:
373
从0.16版本开始,Snail Language语言将函数作为First-Class Value。First-Class Value指的是:函数名和变量名之间没有区别,它们可以相互赋值。要注意的是,print既是函数名又是关键字,所以print可以作为右值,但是不能作为左值。现在一个变量可以表示为:整数、浮点数、字符串、数组、函数。由于是所有的变量都是动态类型,所以赋值时不需要在意当前的类型。...
分类:
编程语言 时间:
2014-01-21 09:26:01
收藏:
0 评论:
0 赞:
0 阅读:
405
摘要:
不要过于自动自发:避免返回类所管理的内部数据的句柄,这样类的客户就不会不受控制地修改对象自己拥有的状态。
class Socket
{
public:
//...打开handle_的构造函数,关闭handle_的析构函数,等等
int GetHandle() const{ return handle_;}
private:
...
分类:
编程语言 时间:
2014-01-21 09:25:11
收藏:
0 评论:
0 赞:
0 阅读:
390
1. 下载安装文件,运行 SETUP.EXE
2.提示兼容性问题 不要管 “运行程序”即可(后面几步看图吧)
这里我少了一个步骤的截图,
缺掉这一步 就两个按钮“是”“否”一般点否就可以了 支持V5 V6...
分类:
编程语言 时间:
2014-01-21 09:12:46
收藏:
0 评论:
0 赞:
0 阅读:
365
C 语言是一种功能强大、简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务。我们可以利用C 语言创建程序(即一组指令),并让计算机依指令行事。用C 语言编程并不难,本书将用浅显易懂的方法介绍C 语言的基础知识,读完本章,读者就可以编写第一个C
语言程序了,其实C 语言很简单。
本章的主要内容:
● C语言标准
● 标准库的概念
● 如何创建C 程序
● 如...
分类:
编程语言 时间:
2014-01-21 09:12:21
收藏:
0 评论:
0 赞:
0 阅读:
590
题目很简单:
输入两个链表(不一定有序),合并这两个链表并使新链表中的结点是按照递增排序。...
分类:
编程语言 时间:
2014-01-21 01:27:05
收藏:
0 评论:
0 赞:
0 阅读:
450
现在几乎所有C/C++的后台程序都需要进行网络通讯,其实现方法无非有两种:使用系统底层socket或者使用已有的封装好的网络库。本文对两种方式进行总结,并介绍一个轻量级的网络通讯库ZeroMQ。...
分类:
编程语言 时间:
2014-01-21 01:22:35
收藏:
0 评论:
0 赞:
0 阅读:
441
一、表达式和基本语句
1、与零或空的比较:
bool:if(flag) if(!flag)
int:if(flag == 0) if(flag != 0)
float:if(flag > -a && flag
指针:if(flag == NULL) if(flag != NULL)
2、for循环中,长循环放在最内层,可以减少cpu跨切循环的次数,循环应避免使用半开半闭区间。
...
分类:
编程语言 时间:
2014-01-21 01:20:15
收藏:
0 评论:
0 赞:
0 阅读:
400
在Snail Language 0.17中,我将原先的线性数组改成了相关联数组,它的本质就是Hash Table,采用C#的Dictionary类型来实现。相关联数组的使用方法:
a = [100, name:"haz", language:"snail", year:2014, version:0.17, 3.14:"浮点数测试"]数组内的元素可以以单个Value,或者Key : Valu...
分类:
编程语言 时间:
2014-01-21 01:18:45
收藏:
0 评论:
0 赞:
0 阅读:
388
def DecisionTree( weight_arr, value_arr, index, left_space ):
if index == 0:
if left_space >= weight_arr[index]:
return value_arr[index]
else:
return 0
without_index = DecisionTree( weight...
分类:
编程语言 时间:
2014-01-21 01:17:15
收藏:
0 评论:
0 赞:
0 阅读:
392
一,概述
先进先出的数据结构,底端加入元素,顶端移除元素,类似stack同样不能有遍历行为,没有迭代器。也是以既有容器为底端容器被归类为陪接器(container adapter),默认底端容器为deque。
二,使用
#include
using namespace std;
三,方法
queue::push( ); ...
分类:
编程语言 时间:
2014-01-21 01:16:40
收藏:
0 评论:
0 赞:
0 阅读:
421
Python视频教程...
分类:
编程语言 时间:
2014-01-21 01:15:30
收藏:
0 评论:
0 赞:
0 阅读:
355
为了像 C++ 中一样通过类实例来访问成员函数,必须将结构体内的函数指针的第一个参数定义为自身的指针,在调用时传入函数指针所属的结构体实例。这是因为 C 语言中不存在像 C++ 中那样的 this 指针,如果我们不显式地通过参数提供,那么在函数内部就无法访问结构体实例的其它成员。...
分类:
编程语言 时间:
2014-01-21 01:10:00
收藏:
0 评论:
0 赞:
0 阅读:
421
迭代器模式
定义:
提供一个方法顺心访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。
适用性:
1、 访问一个聚合对象的内容而无需暴露它的内部表示。
2、 支持聚合对象的多种遍历
3、 为遍历不同的聚合结构提供一个统一的接口。
迭代器的作用:
1、 支持以不同的方式遍历一个聚合。
2、 迭代器简化了聚合的接口
3、 在同一个聚合上可以有多个遍历。
...
分类:
编程语言 时间:
2014-01-21 01:09:20
收藏:
0 评论:
0 赞:
0 阅读:
375
set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,他会自动调整二叉树的排列,把该元素放到合适的位置上,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树的高度相等,这样,二叉树的高度最小,从而检索的速度最快。要注意的是,他不会重复插入相同键值的元素,二采取忽略处理,如下图所示:
...
分类:
编程语言 时间:
2014-01-21 00:56:30
收藏:
0 评论:
0 赞:
0 阅读:
621
C++STL提供了string基本字符系列容器来处理字符串,可以把string理解为字符串类,他提供了添加删除,替换,查找和比较等丰富的方法;
虽然使用vector 这样的向量也可以处理字符串,但功能比不上string。向量的元素类型可以是string,如vector这样的向量,实际上就类似于C语言中的字符串数组;
使用string容器,需要包含头文件声明#include ;
...
分类:
编程语言 时间:
2014-01-21 00:56:20
收藏:
0 评论:
0 赞:
0 阅读:
525
C++ 的一个 比较晦涩难懂的特点是你可以重载 new 操作符,并且你甚至可以给它附加参数。通常,操作符 new 只接受拟分配对象的大小:
void* operator new(size_t nAlloc)
{
return malloc(nAlloc);
}
但你也可以随心所欲附加参数来重载 new 操作符,...
分类:
编程语言 时间:
2014-01-21 00:56:05
收藏:
0 评论:
0 赞:
0 阅读:
374
STL标准模板库提供三种类型的组件:容器,迭代器和算法,他们都支持泛型程序设计标准;
容器主要分为两大类:顺序容器和关联容器。顺序容器有:(vector, list, deque和string等)是一系列元素的有序集合。关联容器:(set, multiset,map, multimap)包含查找元素的键值;
迭代器的作用是遍历容器;
在进行多组测试数据是一定要注意:在每组测试之后都要清空,否...
分类:
编程语言 时间:
2014-01-21 00:55:55
收藏:
0 评论:
0 赞:
0 阅读:
680