摘要:
问题:我看的书上写的对私有部分的访问可以是公共部分的成员函数,也可以是友员函数,那么可以直接对私有部分的静态成员进行初始化吗?回答:1.static成员的所有者是类本身和对象,但是多有对象拥有一样的静态成员。从而在定义对象时不能通过构造函数对其进行初始化。2.静态成员不能在类定义里边初始化,只能在class body外初始化。3.静态成员仍然遵循public,private,protected访问准则。4.静态成员函数没有this指针,它不能返回非静态成员,因为除了对象会调用它外,类本身也可以调用。下面一个类,和其中的一些错误用法:#include <iostream>#inclu 阅读全文
摘要:
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态数据成员的用途之一是统计有多少个对象实际存在。静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在够造函数中初始化该成员,因为静态数据成员为类的各个对象共享,那么每次创建一个类的对象则静态数据成员都要被重新初始化。 阅读全文
摘要:
#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 阅读全文
摘要:
13.1.9指向类成员的指针在C++语言中,可以定义一个指针,使其指向类成员或成员函数,然后通过指针来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。1.指向数据成员的指针在C++语言中,可以定义一个指针,使其指向类成员。当属性成员为静态和非静态时,指针的使用也有不同。其中,指向非静态数据成员的指针定义格式如下:1.<数据类型><类名>::*<指针名>[=&<类名>::<非静态数据成员>]指向非静态数据成员的指针在定义时必须和类相关联,在使用时必须和具体的对象关联。1.<类对象名>.*<指向非静态 阅读全文
摘要:
严格意义上的子对象初始化只能在复合类的构造函数的初始化列表中进行。作为变通,你可以在子对象所属的类中把真正执行初始化工作的代码写成一个普通公开成员函数,在复合类的构造函数体内调用这个函数。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)//变通方法,在函... 阅读全文
摘要:
本文主要集中介绍 C++类中的 各种成员, 这些成员分别是: 类中的静态(static)成员变量, 成员函数; const(常量)成员变量, 成员函数和 const 对象; const static(常量静态)数据成员;对象数组;类中的对象成员;类成员指针;嵌套类;友元;this 指针以及.*和->*运算符共 12 种内容.1.类中的静态成员变量 static:被类中的所有对象所共享,静态成员属于整个类不属于某个对象.静态成员变量和全局变量差不多,只是他的作用范围为定义他的类及类的对象所知.1.1.当在一个类中声明静态成员变量时并没有定义该变量即没有为他分配存储空间,所以必须在类外对静态 阅读全文