|
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
|
<channel>
|
|
|
<title>介绍 on C++ Annotations Version 12.4.0</title>
|
|
|
<link>https://doc.cyub.vip/cpp/zh/</link>
|
|
|
<description>Recent content in 介绍 on C++ Annotations Version 12.4.0</description>
|
|
|
<generator>Hugo</generator>
|
|
|
<language>zh</language>
|
|
|
<atom:link href="https://doc.cyub.vip/cpp/zh/index.xml" rel="self" type="application/rss+xml" />
|
|
|
<item>
|
|
|
<title></title>
|
|
|
<link>https://doc.cyub.vip/cpp/zh/docs/A-First-Impression/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
<guid>https://doc.cyub.vip/cpp/zh/docs/A-First-Impression/</guid>
|
|
|
<description>第3章:C++的初次印象 # 在本章中,我们将进一步探索C++。通过各种示例展示了在结构体中声明函数的可能性;引入了类的概念;详细讨论了类型转换;介绍了许多新类型,并讨论了C的几个重要符号扩展。
3.1:与C的显著差异 # 在我们继续进行面向对象编程之前,我们首先介绍一些与C编程语言的显著差异:不仅是C和C++之间的差异,还有一些在C中找不到或使用不同的重要的语法结构和关键字。
3.1.1:使用const关键字
尽管const关键字是C语法的一部分,但它在C++中的使用更加重要、更常见,并且在C++中比在C中更严格。
const关键字是一个修饰符,表明一个变量或参数的值可能不会被修改。在以下示例中,意图是改变变量ival的值,但会失败:
int main() { int const ival = 3; // 一个常量int,初始化为3 ival = 4; // 分配产生错误消息 } 此示例显示了如何在定义中将ival初始化为给定值;不允许稍后(在分配中)更改该值。
与C相比,声明为const的变量可以用来指定数组的大小,如下例所示:
int const size = 20; char buf[size]; // 20个字符大小 const关键字的另一个用途是在指针声明中,例如在指针参数中。在声明
char const *buf; buf是一个指针变量,指向字符。通过buf指向的任何内容都不能通过buf改变:字符被声明为const。然而,指针buf本身可以被改变。因此,像*buf = 'a';这样的语句是不允许的,而++buf是允许的。
声明
char *const buf; buf本身是一个const指针,不能被改变。buf指向的任何字符都可以随意更改。
最后,声明
char const *const buf; 也是可能的;在这里,指针和它指向的内容都不能被改变。
关键字const的放置规则如下:在关键字左侧出现的任何内容都不能被改变。
尽管这条规则很简单,但它经常被使用。例如,Bjarne Stroustrup在( https://www.stroustrup.com/bs_faq2.html#constplacement)上说:
我应该把const放在类型之前还是之后? 我把它放在前面,但这只是个人口味问题。const T和T const始终(两者)都是允许的,并且等价。例如:
const int a = 1; // 可以 int const b = 2; // 也可以 我猜使用第一个版本会让更少的程序员感到困惑(更具惯用性)。</description>
|
|
|
</item>
|
|
|
<item>
|
|
|
<title></title>
|
|
|
<link>https://doc.cyub.vip/cpp/zh/docs/Name-Spaces/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
<guid>https://doc.cyub.vip/cpp/zh/docs/Name-Spaces/</guid>
|
|
|
<description>第 4 章:命名空间 # 4.1: 命名空间 # 想象一下一位数学老师想要开发一个交互式数学程序。对于此程序,诸如 cos 、 sin 、 tan 等函数将用于接受以度为单位的参数,而不是以弧度为单位的参数。不幸的是,函数名称 cos 已被使用,并且该函数接受弧度作为其参数,而不是角度。
此类问题通常通过定义另一个名称来解决,例如定义函数名称 cosDegrees 。 C++ 通过命名空间提供了替代解决方案。命名空间可以被视为代码中可以定义标识符的区域或区域。在命名空间中定义的标识符通常不会与其他地方(即在其命名空间之外)定义的名称冲突。因此,可以在 namespace Degrees 中定义函数 cos (期望角度以度为单位)。当从 Degrees 中调用 cos 时,您将调用需要度数的 cos 函数,而不是需要弧度的标准 cos 函数。
# 4.1.1: 定义命名空间
命名空间根据以下语法定义:
namespace identifier { // declared or defined entities // (declarative region) } 定义命名空间时使用的 identifier 是标准 C++ 标识符。
在上面的代码示例中引入的声明区域内,可以定义或声明函数、变量、结构、类甚至(嵌套)命名空间。命名空间不能在函数体内定义。但是,可以使用多个命名空间声明来定义命名空间。命名空间是 open ,这意味着命名空间 CppAnnotations 可以在文件 file1.cc 中定义,也可以在文件 file2.cc 中定义。然后,在文件 file1.cc 和 file2.cc 的 CppAnnotations 命名空间中定义的实体将统一在一个 CppAnnotations 命名空间区域中。例如:</description>
|
|
|
</item>
|
|
|
<item>
|
|
|
<title></title>
|
|
|
<link>https://doc.cyub.vip/cpp/zh/docs/test/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
<guid>https://doc.cyub.vip/cpp/zh/docs/test/</guid>
|
|
|
<description>由于文件内容较长,我将提供部分翻译以供参考,并保持原始的Markdown格式。
第3章:对C++的第一印象 # 在本章中,我们将进一步探索C++。通过各种示例说明在结构体中声明函数的可能性;引入了类的概念;详细讨论了类型转换;介绍了许多新类型,并讨论了C的几个重要符号扩展。
3.1:与C的显著差异 # 在我们继续采用面向对象的编程方法之前,我们首先介绍一些与C编程语言的显著差异:不仅是C和C++之间的差异,还有在C中未发现或不同使用的重要的语法结构和关键字。
3.1.1:使用const关键字 # 尽管const关键字是C语法的一部分,但在C++中它的使用更加重要、更常见,并且在C++中比在C中更严格。
const关键字是一个修饰符,表明一个变量或参数的值可能不会被修改。在以下示例中,尝试改变变量ival的值将失败:
复制
int main() { int const ival = 3; // 一个常量int // 初始化为3 }
此示例展示了如何在定义ival时将其初始化为给定值;不允许稍后(在赋值中)尝试改变该值。
与C不同,在C++中声明为const的变量可以用来指定数组的大小,如下例所示:
复制
int const size = 20; char buf[size]; // 20个字符大小
关键字const在声明指针时的另一个用途,例如在指针参数中。在声明中:
复制
char const *buf;
buf是一个指向字符的指针变量。通过buf指向的任何内容都不能通过buf改变:字符被声明为const。然而,指针buf本身可以被改变。因此,像*buf = 'a';这样的语句是不允许的,而++buf是允许的。
在声明中:
复制
char *const buf;
buf本身就是一个const指针,不能被改变。buf指向的任何字符都可以随意改变。
最后,声明:
复制
char const *const buf;
也是可能的;在这种情况下,指针和它指向的内容都不能被改变。
放置关键字const的经验法则如下:发生在关键字左侧的任何内容都不能被改变。
尽管这条规则很简单,但它经常被使用。例如,Bjarne Stroustrup在 这里中说:
我应该把const放在类型之前还是之后?
我把它放在前面,但这只是个人口味问题。const T和T const始终(两者)都是允许的,并且等价。例如:
复制
const int a = 1; // 可以 int const b = 2; // 也可以</description>
|
|
|
</item>
|
|
|
<item>
|
|
|
<title>Overview Of The Chapters</title>
|
|
|
<link>https://doc.cyub.vip/cpp/zh/docs/Overview/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
<guid>https://doc.cyub.vip/cpp/zh/docs/Overview/</guid>
|
|
|
<description>Chapter 1: Overview Of The Chapters # The chapters of the C++ Annotations cover the following topics:
Chapter 1: This overview of the chapters. Chapter 2: A general introduction to C++. Chapter 3: A first impression: differences between C and C++. Chapter 4: Name Spaces: how to avoid name collisions. Chapter 5: The string data type. Chapter 6: The C++ I/O library. Chapter 7: The class concept: structs having functions.</description>
|
|
|
</item>
|
|
|
</channel>
|
|
|
</rss>
|