现在位置: 首页 > 自动控制 > 工业·编程 > 文章
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装...
阅读全文
2012-09-06 23:18 工业·编程 ⁄ 共 721字 暂无评论
在说明什么是友元之前,我们先说明一下为什么需要友元与友元的缺点: 通常对于普通函数来说,要访问类的保护成员是不可能的,如果想这么做那么必须把类的成员都生命成为public(共用的),然而这做带来的问题遍是任何外部函数都可以毫无约束的访问它操作它,c++利用 friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作,避免把类成员全部设置成public,最大限度的保护数据成员的安全。 友元能够使得普通函数直...
阅读全文
我们常常在初始化类数据成员的时候,对使用初始化表和在构造函数中十分困惑,这二者有什么区别呢?我们应该如何选择呢? 先举个简单的例子,看下面的两段代码: 代码A: [cpp] view plaincopyprint? inline Account::Account(const char* name,doubl opening_bal)                        ...
阅读全文
2012-09-06 23:11 工业·编程 ⁄ 共 265字 暂无评论
要说初始化表的重要作用我网上找了下就只找了这两个常用的: (1)如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。 (2)类的const常量只能在初始化表里被初始化,因为它不能在函数体内用赋值的方式来初始化。 例: class A {     const int tmp;//A类里的常量     public A(int value):tmp(value)//使用初始化表来初始化常量tmp     {    ...
阅读全文
2012-09-06 23:05 工业·编程 ⁄ 共 989字 暂无评论
     拷贝构造函数,经常被称作X(X&),是一种特殊的构造函数,他由编译器调用来完成一些基于同一类的其他对象的构件及初始化。它的唯一的一个参数(对象的引用)是不可变的(因为是const型的)。这个函数经常用在函数调用期间于用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。     在...
阅读全文
拷贝构造函数: 以一个对象的内容去初始化另个对象。 (关键在于初始化) 有三种情况下会调用拷贝构造函数 class x {……}; (1)X x;  X xx=x     //不是赋值操作而是拷贝构造函数 (2)void foo (X x);    // 对象参数 (3)FooBar() { X x; return x;}  // 返回对象 如果类没有提供显示的拷贝构造函数,编译器采用的是位逐次拷贝。也就是把对象数据成员值拷贝到另个对象...
阅读全文
2012-09-06 22:05 工业·编程 ⁄ 共 5623字 评论 1 条
算起来,我用Visual C++也有将近5年的历史了。在这期间,我也曾涉猎过Visual Basic和Delphi,但都是浅尝而止;Visual C++始终是我的主业。可是努力的成果如何呢?我用Delphi作出了十多个有规模的软件,用VB--虽然我用在VB上的时间只有短短的两三个月--也有两个像样的项目;然而,在我付出了最大热情和最多努力的Visual C++上面,却只作出了三个自己看得上眼的软件。 固然,在用Visual C++的时候,MFC帮了我不少的忙。但是...
阅读全文
2012-09-06 21:56 工业·编程 ⁄ 共 5977字 暂无评论
一、什么是MFC         微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个输助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,...
阅读全文
2012-09-06 11:37 工业·编程 ⁄ 共 851字 评论 1 条
观点一     c++是语言,但你知道,语言本身功能是很有限的,需要一些类库把常用的操作封装起来,以后可以直接调用,就节省了普通开发人员的大量精力.     stl和MFC都是一个扩充C++语言功能的类库.     stl是底层类库,提供的是一般编程都会用到的功能,主要是一套容器,和一套相关的算法.常用的数据结构,比如list, queue, stack, map等等,都在stl里面给你实现好了,直接用就是了.  &#...
阅读全文
    做项目的过程中,遇到这样的问题:在自己的电脑上用VS2005编译好的DEBUG版程序在其它的没有安装VS2005的电脑上没有办法运行,郁闷至极啊。 直接拷贝文件后,错误信息如下:"This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.",大意就是程序由于配置错误导致启动失败,重新安装来解决这个问题。 ...
阅读全文