《大规模C++程序设计》读书笔记2

本文探讨了C++中声明与定义的区别,解释了内部连接与外部连接的概念,并讨论了如何在头文件中正确地使用定义。此外,还强调了接口设计的重要性。

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

定义1:一个声明将一个名称引入一个程序;一个定义提供了一个实体(例如,类型、实例、函数)在一个程序中的唯一描述。

在给定作用域中,声明可以重复,定义只能有一个。例外:类的成员函数和静态数据成员,虽然不是定义,但在一个类声明中也不可以重复。

Class NoGood {

static int i; // declaration

static int i; // illegal in C++

public:

int f(); // declaration

int f(); // illegal in C++

}


定义2:如果一个名称对于它的编译单元来说是局部的,并且在连接时不可能与其他编译单元中的同样的名称相冲突,那么这个名称有内部连接

static变量、const变量、enum类型、类定义、inline函数定义、typedef声明

定义3:在一个多文件程序中,如果一个名称在连接时可以和其他编译单元交互,那么这个名称就有外部连接

非内联成员函数、静态成员变量、非内联函数、非静态自由函数



在头文件中放置带有内部连接的定义是合法的,但并不是一种良好的做法:1. 在每一个包含该头文件的编译单元中消耗数据空间,影响程序的大小;2. 破坏高速缓存机制,影响程序运行性能。例外:在头文件中放置一个用户自定义对象的静态实例,用来确保一个特殊的全局工具(例如iostream)在使用前已被初始化。


好的接口比好的实现更重要,接口对客户程序产生直接的影响,并且具有全局影响力,实现只是影响作者和代码维护者。

Technorati : C++, 大规模C++程序设计, 读书笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞凡 DeepNoMind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值