码迷,mamicode.com
首页 > 编程语言 > 详细

c++课程感想6

时间:2015-10-14 23:45:39      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

static:共享即通讯

一句话概括:局部作用域,全局生存期。

为什么要设计成为这样?

可以看一下这样的一段代码:

#include <iostream.h>
#include <string.h>

class CSmallOne
{
public:
    CSmallOne(int sma);
    int a;
};

CSmallOne::CSmallOne(int sma)
{
    cout <<"Smallone constructing with a value of"
        << sma <<endl;
}

void fn(int n)
{
    static CSmallOne sm(n);    //静态局部对象在静态数据区创建(只一次)
    sm.a += n;
    cout <<"In function fn with n= " << sm.a <<endl;
}

//CSmallOne sm(5);

void main()
{
    fn(10);        //只看见一次调用构造函数
    fn(10);        //值可以累加(静态局部对象的特征)
}

在这里,创建了一个静态局部对象,然后构造函数在这里只是调用了一次,当再次调用时,并没有调用构造函数,这里我们可以类比静态局部变量,这个是存储在静态数据区域的,然后构造函数一旦调用,对象就在静态区了,所以下次就不需要我们再次去调用了。

还有就是一个程序

#include <iostream.h>
#include "A.h"

A :: A()
{
	cout << "in A" << endl;
}
class A
{
public:
	A();
};

#include <iostream.h>
#include "A.h"

A a;

void main()
{
	cout << "in main" << endl;
}

 在这里,我们要考虑的是出来的结果,为什么是A而不是main,在这里,A在全局区域,那么首先在加载时便会自行调用构造函数,于是A出来了,但是我们不妨想想,在这里,直接没有经过main函数就进行调用了,所以这是个问题。一般设计者是希望在main里面执行的。

 

c++课程感想6

标签:

原文地址:http://www.cnblogs.com/wit-lq/p/4881033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!