静态成员

C++静态成员函数小结 【转】

六眼飞鱼酱① 提交于 2019-11-26 18:31:56
原文:http://www.cnblogs.com/lzjsky/archive/2011/01/24/1943199.html 类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: xxx.h文件 class base{ private: static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。 }; xxx.cpp文件 const int base::_i=10;//定义(初始化)时不受private和protected访问限制. 注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。 2

C++指针、this指针、静态成员

試著忘記壹切 提交于 2019-11-26 13:01:21
C++指针、this指针、静态成员 一、C++ this指针 this指针指向调用的对象本身,在成员函数中,都会有一个默认的参数this。这点如果学过Python的话,可能会知道,在Python中每一个成员函数都会一个参数self,这里的this就是差不多的东西。其实具体来说,this指针也是指针,它存储的也是一个地址。当我们用一个对象去调用一个成员函数时,我们会把该对象的地址传给该函数,这也就是在函数中的this参数。因此this指针中存储的是调用对象的地址。 下面来看一个简单的例子: #include <iostream> using namespace std; class Line { public: int getL(); void setL(int l); void printL(); Line(); ~Line(); private: int len; }; Line::Line() { cout << "创建对象" << endl; } Line::~Line() { cout << "释放内存" << endl; } void Line::setL(int l = 3) { this->len = l; } int Line::getL() { return this->len; } void Line::printL() { int temp; temp =

静态成员

落爺英雄遲暮 提交于 2019-11-26 06:01:44
我们可以使用static关键字把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。 静态成员在类的所有对象都是贡献的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为0。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化。 静态成员变量 /*** static.cpp ***/ #include<iostream> using namespace std; class Box { public: static int objectCount; Box(double l = 2.0,double b = 2.0,double h = 2.0) { cout << "Construct called." << endl; length = l; breadth = b; height = h; objectCount++; } double Volume() { return length*breadth*height; } private: double length; double breadth; double height; }; int Box::objectCount = 0; int main() { Box