• C++编程思想读书笔记10 名字控制


    1 可见范围控制

    连接只针对在连接/装载期间有地址的成员.

    全局变量,普通函数默认是外部连接(对其它文件可见,默认的extern属性)

    全局const变量除外,全局const变量默认是内部连接的(static属性)

    全局变量是静态存储的

    static对全局变量的作用是改为内部连接(对其它文件不可见), 对局部变量的作用是改变其存储类型(由动态存储改为静态存储)


    2 静态变量

    静态存储的变量第一次调用时(定义时)必须初始化
    对于内部类型,默认进行零初始化. 但对自定义类型,若没指定构造函数参数,则要有默认构造函数.
    全局变量总是在main之前被创建,退出main时销毁 (全局变量总是静态存储,是静态变量)
    局部静态变量只有在调用时才初始化,若没调用则不初始化.
    局部静态变量与局部变量区别: 只在第一次调用时初始化,在两次函数调用期间保持其值

    3 命名空间

    书上讲的太过复杂, 我以前的博客整理了简单的. http://blog.csdn.net/a8887396/article/details/8760230

    4 C++中的静态成员

    静态数据成员的定义必须在内的外部,不允许内联.
    1 如果静态成员是内部类型 初始化直接用=
    2 如果静态成员是数组 初始化也用等号
    3 如果静态成员是对象 则用构造函数



    #include "stdafx.h"
    #include <string>
    #include <iostream>
    using namespace std;
    
    class Value
    {
    	static int x;
    	static int a[10];
    	static string str;
    	static string b[5];
    public:
    	void print();
    };
    
    int Value:: x = 100;
    int Value::a[10] ={1,2,3,4,5,6,7,8,9,0};
    string Value::str("hello");
    string Value::b[5]= { string("h"),string("e"), string("l"),string("l"), string("o")};
    
    void Value:: print()
    {
    	cout << "x:" << x << endl; 
    	cout << "a:" ;
    	for(int i=0;i<10;i++)
    	{
    		cout << a[i] << ' ';
    	}
    	cout << endl;
    	cout << "str" << str << endl;
    	cout << "b:";
    	for(int i=0;i<5;i++)
    	{
    		cout << b[i] << ' ';
    	}
    	cout << endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Value v;
    	v.print();
    
    	system("pause");
    	return 0;
    }
    



  • 相关阅读:
    c# 类中使用ResolveUrl
    IIS7日志中时间与系统时间不一致的原因
    IIS日志-网站运维的好帮手
    精通 JS正则表达式
    word 标题序号
    rtx 二次开发,查找所有部门
    【云计算】Docker容器时间同步如何配置?
    【云计算】Docker多进程管理方案-cfengine && supervisord
    【Python】装饰器实现日志记录
    【云计算】k8s相关资料
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3132781.html
Copyright © 2020-2023  润新知