C++ static、const对象声明与定义 --续集

本文详细解析了C++中类成员static和const的使用场景及区别,通过实例展示了如何正确地在类体声明与实现文件中进行定义与声明,并解释了在main函数中定义的原因及执行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

////////////// //fileName:TestClass.h //////////// //#pragma once #ifndef THIS___ #define THIS___ #include <iostream> using namespace std; //const int TestClass::m_con_var class TestClass { public: TestClass(); TestClass(int n); virtual ~TestClass(void); int m_ntestVar; static int m_nvar; const static int m_cnsta_var; static const int m_con_var ; private: public: int display(void); }; //const int TestClass::m_con_var; #endif ////////////// //fileName:TestClass.cpp //////////// #include "TestClass.h" TestClass::TestClass(){ } TestClass::TestClass(int n):m_ntestVar(n) { cout << "m_nvar" << TestClass::m_nvar << endl; cout << "this->m_ntestVar" << this->m_ntestVar << endl; cout << "m_cnsta_var" << TestClass::m_cnsta_var << endl; TestClass::m_nvar++; } TestClass::~TestClass(void) { cout << TestClass::m_nvar << endl; } // demo_static.cpp : Defines the entry point for the console application. // #include "TestClass.h" //static const int TestClass::m_con_var; //int TestClass::m_nvar = 0; //int TestClass::m_cnsta_var = 12; //TestClass::m_ntestVar //extern const int m_con_var; /*int TestClass::m_con_var = 0*/; int TestClass::m_nvar; const int TestClass::m_cnsta_var = 0; const int TestClass::m_con_var = 0; int main(int argc, char * argv[]) { TestClass tc(10); TestClass tc1(120); TestClass tcc[100]; int i = 0; while(i < 100){ tcc[i] = TestClass(0); i++; } return 0; }

 

 

const static 和static const成员在类体中只有声明,在实现文件TestClass.cpp中也没有定义,却把定义放到了main函数所在的文件中。不解??这个程序也一个做游戏的朋友告诉我的,还没呢理解,先放到这里。

执行结果与

C++ static、const对象声明与定义

一样:

转载于:https://www.cnblogs.com/Podevor/archive/2011/06/28/2788090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值