c++中重要概念的总结
2012-08-08 21:42
246 查看
定义:
要分来理解:
变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中变量有且仅有一个定义。《c++ prime》 2.3.5
类定义:一旦遇到右花括号,类的定义就结束了。我们一旦定义了类,我们就知道了所有的类成员,以及存储该类的对象所需的存储空间。《c++ prime》12.1.4。(一般而言)定义类型是不进行存储分配。《c++ prime》12.1.5。这就是为什么2.3.5中对定义的说明单单解释成变量的定义,而不是范范的说明什么是定义。
声明:
用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。
头文件:
头文件一般包含类的定义、extern变量的声明和函数的声明。
头文件用于声明而不是用于定义。这句话是对extern变量和函数说的。有三个例外,头文件可以定义类、值在编译阶段就已知道的const对象和inline函数。这些实体可在多个源文件中定义,只是每个源文件中的定义是相同的。《c++ prime》 2.9.1
在一个给定的源文件中,一个类只能被定义一次,如果在多个文件中定义一个类,那么每个文件中的定义必须是完全相同的。
将类定义放在一个头文件中,可以保证每个使用类的源文件中以同样的方式定义类。使用头文件保护符,来保证即使头文件在同一文件中包含多次,类定义也只出现一次。
我的理解是:每个源文件都可以使用同一个类定义,前提是类定义是一致的。这可以通过将类定义放在头文件中让所有需要该类定义的源文件include进来就ok。
同时,用头文件保护符,可以保证头文件在同一文件中包含多次,类定义也只出现一次。最后连接成的可执行程序中通过头文件保护符也同样保证了这整个上下文中只有一个类定义 。《c++ prime》12.1.4
初始化:
初始化是指创建变量并给它赋初始值。《c++ prime》2.3.4 定义对象
赋值:
则是擦除对象的当前值并用新值代替。《c++ prime》2.3.4 定义对象
类对象创建的过程:
1)为对象分配内存。
2)调用构造函数来初始化那个内存。
可以这么理解:类对象创建时,必将执行构造函数的初始化阶段。该阶段用初始化列表进行赋初始化值。如果初始化列表中没有列举,按照如下规则初始化:
1)如果是类类型,运行该类型的默认构造函数,来初始化类类型的数据成员。
2)如果是内置或复合类型(结构体、数组等)的成员的初始值依赖于对象的作用域:局部作用域中这些成员不被初始化 ,而在全局作用域中它们被初始化为0
之后将执行构造函数的普通计算阶段,既是对类对象成员的赋值了。
要分来理解:
变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中变量有且仅有一个定义。《c++ prime》 2.3.5
类定义:一旦遇到右花括号,类的定义就结束了。我们一旦定义了类,我们就知道了所有的类成员,以及存储该类的对象所需的存储空间。《c++ prime》12.1.4。(一般而言)定义类型是不进行存储分配。《c++ prime》12.1.5。这就是为什么2.3.5中对定义的说明单单解释成变量的定义,而不是范范的说明什么是定义。
声明:
用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。
头文件:
头文件一般包含类的定义、extern变量的声明和函数的声明。
头文件用于声明而不是用于定义。这句话是对extern变量和函数说的。有三个例外,头文件可以定义类、值在编译阶段就已知道的const对象和inline函数。这些实体可在多个源文件中定义,只是每个源文件中的定义是相同的。《c++ prime》 2.9.1
在一个给定的源文件中,一个类只能被定义一次,如果在多个文件中定义一个类,那么每个文件中的定义必须是完全相同的。
将类定义放在一个头文件中,可以保证每个使用类的源文件中以同样的方式定义类。使用头文件保护符,来保证即使头文件在同一文件中包含多次,类定义也只出现一次。
我的理解是:每个源文件都可以使用同一个类定义,前提是类定义是一致的。这可以通过将类定义放在头文件中让所有需要该类定义的源文件include进来就ok。
同时,用头文件保护符,可以保证头文件在同一文件中包含多次,类定义也只出现一次。最后连接成的可执行程序中通过头文件保护符也同样保证了这整个上下文中只有一个类定义 。《c++ prime》12.1.4
初始化:
初始化是指创建变量并给它赋初始值。《c++ prime》2.3.4 定义对象
赋值:
则是擦除对象的当前值并用新值代替。《c++ prime》2.3.4 定义对象
类对象创建的过程:
1)为对象分配内存。
2)调用构造函数来初始化那个内存。
可以这么理解:类对象创建时,必将执行构造函数的初始化阶段。该阶段用初始化列表进行赋初始化值。如果初始化列表中没有列举,按照如下规则初始化:
1)如果是类类型,运行该类型的默认构造函数,来初始化类类型的数据成员。
2)如果是内置或复合类型(结构体、数组等)的成员的初始值依赖于对象的作用域:局部作用域中这些成员不被初始化 ,而在全局作用域中它们被初始化为0
之后将执行构造函数的普通计算阶段,既是对类对象成员的赋值了。
相关文章推荐
- C++基本概念总结——重载(overload)和重写(override)
- C++基础概念总结(一)
- 期望与方差之重要概念总结
- C++:与字符串常量有关的几个重要概念string literal, string, C-style charater string
- C++一些基本概念总结【面向过程篇】——指针
- 「学习总结-Haskell-5」Haskell 重要概念——函数
- STL + c++ + 模板 + 重要思维 + 基础算法+ 经典算法 + 经典实例 + 编程总结+ 心得+ 入门必会 + 知识点汇总。
- C++一些基本概念总结【数据表达篇】
- 【重要】C/C++/嵌入式,必会的理论概念
- c++基础1:需要了解的几点重要概念
- STL + c++ + 模板 + 重要思维 + 基础算法+ 经典算法 + 经典实例 + 编程总结+ 心得+ 入门必会 + 知识点汇总。+string +dfs +bfs等重要算法
- c++基础1:需要了解的几点重要概念
- STL学习笔记(四)——温习一下C++的一些重要概念(上)
- java基础<线程>总结(线程概念、线程创建方式、线程间通信、线程重要方法)
- C++一些基本概念总结【面向过程篇】——函数
- C++重要几个概念
- Linux下C++的编程几个重要的工具和概念
- C++基本概念总结——声明(declaration)和定义(definition)
- 【干货】前端重要概念精炼总结--持续更新
- C++中 new/delete 概念和用法总结