c++ static修饰的成员变量必须在类外显示的进行初始化

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdlib.h>
using namespace std;
class A
{
public:
	A()
	{
		cout << "A的构造函数" << endl;
	}
public:
	static int a;//因为静态成员属性必须在外面进行显示初始化,所以需要是public类型的
	int b;
public:
	void getParent()
	{
		cout << "b=" << b << endl;
	}
	void printT()
	{
		cout << "aaaaaaa" << endl;
	}

};
int A::a = 100;
//这句话 不是简单的变量赋值 更重要的是 要告诉C++编译器 你要给我分配内存 ,我再继承类中 用到了a 不然会报错..
class B:public A
{
public:
	int b;
	int c;
public:
	void get_child()
	{
		cout << "b " << b << endl;
		cout << a << endl;
	}
	void print()
	{
		cout << "BBBB " << endl;
	}
};
//1 static关键字 遵守  派生类的访问控制规则

//2  不是简单的变量赋值 更重要的是 要告诉C++编译器 你要给我分配内存 ,我再继承类中 用到了a 不然会报错..

//3 A类中添加构造函数 如果不写public访问控制符,那么默认构造函数是私有的,当子类继承后用来构造新的对象时在子类不能访问
//A类的构造函数中   A的构造函数是私有的构造函数 ... 
//被别的类继承要小心....
//单例场景 .... UML

int main(void)
{
	A a1;
	a1.printT();
	B b1;
	b1.print();//调用子类
	b1.get_child();

	system("pause");
	return 0;
}

/*
 * static修饰的成员变量必须显式初始化,在类的外部
 成员函数不写访问控制符默认是私有的
 */

猜你喜欢

转载自blog.csdn.net/baixiaolong1993/article/details/89205634
今日推荐