C++常成员变量、静态变量、常成员函数初始化及定义

1、static定义的静态变量不属于某个具体类对象,它是属于类的的,只能在类的内部声明,在类外定义;即在C++中,static静态成员变量不能在类的内部初始化;

2、C++中,const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。

  【const数据成员 只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类的声明中初始化const数据成员,因为类的对象没被创建时,编译器不知道const数据成员的值是什么。】

3、要想建立在整个类中都恒定的常量,应该用类中的枚举常量来实现,或者static conststatic cons变量就可以在声明时初始化。

4、常成员函数:主要适用于不改变类中成员变量,只读取的。比如GetValue之类的函数。

#pragma once

#include <iostream>
class CTestBasic
{
public:
	//常成员:默认初始化
	CTestBasic() :conNum(0) {
		value = -1;
		pValue = new int;
	}
	//常成员:重载初始化
	CTestBasic(int num ) :conNum(num) {}


	//常成员函数:又成为只读函数,不能改变成员变量的值
	int getsNum() const;
	int getcNum() const;
	int get_scNum() const;
	int getPointerValue() const;

	~CTestBasic();
private:
	//const成员变量不能在类定义处初始化,[ 只能通过构造函数初始化列表进行 ],并且必须有构造函数
	const int conNum;

	//static成员变量不能在构造函数初始化列表中初始化,因为它不属于某个对象.
	static int sNum;

	
	const static  int scNum = 100;
	int value;
	int* pValue;
};
#include "CTestBasic.h"

//静态成员类外初始化
int CTestBasic::sNum = 1;

//函数定义也必须包含const 关键字
int CTestBasic::getsNum() const
{
	return sNum;
}

int CTestBasic::getcNum() const
{
	return conNum;
}

int CTestBasic::get_scNum() const
{
	return scNum;
}

int CTestBasic::getPointerValue() const
{
	*pValue = 200;
	//pValue++; Error: pValue的值不能改变
	return *pValue;
}

CTestBasic::~CTestBasic()
{
}

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值