上一页 1 ··· 4 5 6 7 8
摘要: 问题:我看的书上写的对私有部分的访问可以是公共部分的成员函数,也可以是友员函数,那么可以直接对私有部分的静态成员进行初始化吗?回答:1.static成员的所有者是类本身和对象,但是多有对象拥有一样的静态成员。从而在定义对象时不能通过构造函数对其进行初始化。2.静态成员不能在类定义里边初始化,只能在class body外初始化。3.静态成员仍然遵循public,private,protected访问准则。4.静态成员函数没有this指针,它不能返回非静态成员,因为除了对象会调用它外,类本身也可以调用。下面一个类,和其中的一些错误用法:#include <iostream>#inclu 阅读全文
posted @ 2012-04-04 15:28 carbs 阅读(18819) 评论(0) 推荐(0) 编辑
摘要: 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态数据成员的用途之一是统计有多少个对象实际存在。静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在够造函数中初始化该成员,因为静态数据成员为类的各个对象共享,那么每次创建一个类的对象则静态数据成员都要被重新初始化。 阅读全文
posted @ 2012-04-04 15:07 carbs 阅读(2687) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>using namespace std;class A{private: int n;public: A(int n) { this->n=n; cout<<"A constructor"<<endl; } void show(); class B { public: B() { cout<<"B constructor"<<endl; } void disp() { cout<<"B disp"<<endl 阅读全文
posted @ 2012-04-04 12:18 carbs 阅读(683) 评论(0) 推荐(0) 编辑
摘要: 13.1.9指向类成员的指针在C++语言中,可以定义一个指针,使其指向类成员或成员函数,然后通过指针来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。1.指向数据成员的指针在C++语言中,可以定义一个指针,使其指向类成员。当属性成员为静态和非静态时,指针的使用也有不同。其中,指向非静态数据成员的指针定义格式如下:1.<数据类型><类名>::*<指针名>[=&<类名>::<非静态数据成员>]指向非静态数据成员的指针在定义时必须和类相关联,在使用时必须和具体的对象关联。1.<类对象名>.*<指向非静态 阅读全文
posted @ 2012-04-04 01:58 carbs 阅读(4981) 评论(2) 推荐(0) 编辑
摘要: 严格意义上的子对象初始化只能在复合类的构造函数的初始化列表中进行。作为变通,你可以在子对象所属的类中把真正执行初始化工作的代码写成一个普通公开成员函数,在复合类的构造函数体内调用这个函数。class A{ int data;public: A(){} A(int d):data(d){} void init(int d){data=d;}};class B{ A a;public: B(int d):a(d)//常规方法,在初始化列表中初始化子对象 { }};class C{ A a;public: C(int d)//变通方法,在函... 阅读全文
posted @ 2012-04-04 01:01 carbs 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 本文主要集中介绍 C++类中的 各种成员, 这些成员分别是: 类中的静态(static)成员变量, 成员函数; const(常量)成员变量, 成员函数和 const 对象; const static(常量静态)数据成员;对象数组;类中的对象成员;类成员指针;嵌套类;友元;this 指针以及.*和->*运算符共 12 种内容.1.类中的静态成员变量 static:被类中的所有对象所共享,静态成员属于整个类不属于某个对象.静态成员变量和全局变量差不多,只是他的作用范围为定义他的类及类的对象所知.1.1.当在一个类中声明静态成员变量时并没有定义该变量即没有为他分配存储空间,所以必须在类外对静态 阅读全文
posted @ 2012-04-04 00:37 carbs 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 一.简介 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public:virtual void foo() { cout << "A::foo() is called" << endl;}};class B: public A{public:virtual void foo() { cout << "B::foo() is called" << endl;}}; 那么,在使用的时候,我们可以:A * a = 阅读全文
posted @ 2012-04-03 21:13 carbs 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 1.C++程序设计 (钱能)这本书适合用于入门书或者课堂教程,了解一下C++语法特点,有啥关键字等。2.Windows核心编程 (第5版 英文版)我看英文书一直比较吃力,但是看英文的帖子还行,这本书断断续续的看完了,基本都忘得差不多了,后来没办法,找了个中文的电子版的书再看,对我来说进程知识、线程同步的内容非常实用,建议做windows平台开发的要多看几遍。3.Win32多线程程序设计 (侯捷)介绍多线程开发的书,入门的那种,主要介绍下一些相关的API,我是在看完windows核心编程之后才买该书的,翻了一遍,觉得内容大致都了解,就把书扔了。4.精通正则表达式 (猫头鹰书)对于需要解析复杂文本 阅读全文
posted @ 2012-04-03 09:39 carbs 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 一、选择题1、 以下函数调用语句中的实参个数为( D )。 excc((vl,v2),(v3,v4,v5),v6); (A)3 (B)4 (C)5 (D)62、 在C/C++程序中,( A )。 (A)函数的定义可以嵌套,但函数的调用不可以嵌套(B)函数的定义不可以嵌套,但函数的调用可以嵌套(C)函数的定义和函数的调用均不可以嵌套(D)函数的定义和函数的调用均可以嵌套3、 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( D )。(A)函数调用可以作为独立的语句存在(B)函数调用可以作为一个函数的实参(C)函数调用可以出现在表达式中 (D)函数调用可以作为一个函数的形参4、 若有 阅读全文
posted @ 2012-04-02 21:15 carbs 阅读(1481) 评论(0) 推荐(0) 编辑
摘要: 分类:C++学习笔记2010-04-0314:11283人阅读评论(0)收藏举报回调函数和函数指针最近在看代码,写代码的人很喜欢用回调函数和函数指针。一直觉得回调函数和函数指针挺神秘的,所以查了一些资料,来与大家一起来分享。什么是回调函数简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。为什么要使用回调函数因为使用回调函数可以把调用者和被调用者分开,调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。回调函数就好像是一 阅读全文
posted @ 2012-04-02 20:50 carbs 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 分类:C++学习笔记2010-04-0123:41511人阅读评论(0)收藏举报前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。当然,相同的文章在 阅读全文
posted @ 2012-04-02 19:00 carbs 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函 数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。可是这个类的构造函数和析构函数都是私 阅读全文
posted @ 2012-04-02 16:50 carbs 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 如何使类不能被继承 如果大家熟悉java的话应该知道java中有一种类不能被继承,那就是final类.这种类有很多用处,尤其是在大 的项目中控制类的继承层次. 使子类数量不至于爆炸.在使用了多继承的类层次中这也是防止出现菱形继承层次结构的一个好办法. 要实现一个不能被继承的类有很多方法. 主要的思路就是使子类不能构造父类的部分,这样子类就没有办法实例化整个子类.这样就限制了子类的 继承. 所以我们可以将父类的构造函数声明成为私有的,但是这样父类不就不能实例化.我想可以添加一个静态帮助函数来进行构造. 虽然这样很简陋.但是这的确是一种解决方法. 可是如果只有这个方法能够解决,那么C++... 阅读全文
posted @ 2012-04-02 11:46 carbs 阅读(3372) 评论(0) 推荐(2) 编辑
摘要: 对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include<iostream>usingnamespacestd;classCExample{private: inta;public: CExample(intb) {a=b;} voidShow() {cout<<a<<endl;}};intmain(){ CExampleA(100); CExampleB=A; B.Show(); return0;}运行 阅读全文
posted @ 2012-04-02 11:43 carbs 阅读(287) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8