C++ Primer 习题12.38 ~ 12.41 class 中的 static 成员

第12 章主要讲类的一些基本概念.

这几个习题都是跟 class 中的 static 成员相关的.


有如下几点值得注意:

1.static 成员的初始化 (或者说叫 定义 ),紧随 class 声明比较合适.换句话说,就是和class 声明放在同一个 .h 文件中.

形如

class A

{

static int m_iTest;

};

int A::m_iTest = 3;


2.尽量地多用const 关键字.

最近看了本书,云风写的<<游戏之旅-我的编程感悟>>,其中有一句比较调侃,

说在最短时间里看c++ 程序员水平高低,就看他写的c++代码里const出现的频率就行了...


3.一些小操作可以inline 在 class 中.

inline 函数类似 macro ,调用时没有出栈 压栈的开销.


Foo.h

#ifndef	FOO_H
#define	FOO_H

class Foo
{
private:
	int m_iVal;
public:
	Foo()
	{
		m_iVal = 0;
	}

	Foo(int Val):m_iVal(Val){}

	int GetVal() const
	{
		return m_iVal;
	}
};
#endif

Bar.h

#ifndef	BAR_H
#define	BAR_H

#include"Foo.h"

class Bar
{
private:
	static int m_iVal;
	static Foo m_Foo;

	static int callsFooVal;

public:
	Foo FooVal()
	{
		++callsFooVal;
		return m_Foo;
	}

	int GetCallsFooVal() const
	{
		return callsFooVal;
	}
};
int Bar::callsFooVal = 0;
Foo Bar::m_Foo(0);
int Bar::m_iVal = 20;

#endif


main.cpp

#include<iostream>
#include"Bar.h"
using namespace std;

int main()
{

    Bar *pBar = new Bar();

    cout << "Get foo val: " << pBar->FooVal().GetVal() << endl;
    cout << "Sum:" << pBar->GetCallsFooVal() << endl;
    cout << "Get foo val: " << pBar->FooVal().GetVal() << endl;
    cout << "Sum:" << pBar->GetCallsFooVal() << endl;
    cout << "Get foo val: " << pBar->FooVal().GetVal() << endl;
    cout << "Sum:" << pBar->GetCallsFooVal() << endl;
    cout << "Get foo val: " << pBar->FooVal().GetVal() << endl;
    cout << "Sum:" << pBar->GetCallsFooVal() << endl;

    delete pBar;
    return 0;
}





ps 一些废话:

前一段时间项目非常紧张,每天都加班到很晚.再加上自己常常犯懒,一直也没有系统的学习.包括现在也是这个状态.

我觉得有必要调整调整.即使没有大块的时间,抓紧零碎地时间也能做一些事情,比如 看C++ Primer,熟悉一些小的知识点,发上来.


总觉得这样一个个知识点的去学习C++ 语言本身,有点像啃字典,非常愚蠢.

等时间比较充裕了,考虑一边学习C++语法,一边熟悉设计模式,把设计模式参考书上的例子用 C++实现一遍。算是对自己的监督吧。

还有另外一个想法 ::等项目结束了,时间相对宽松些,考虑用 C++ 模仿公司的开发工具,做个图形处理的小demo.


勉励一下自己,希望自己不要再懒散,学习坚持下来,别让自己上面说的2点变成空谈。

过一段时间能把自己的小成果发到这里来分享。


最后,表达一下小静静对我加班的支持和理解.谢谢你每天等我加班,给我送饭.小静静你辛苦了!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值