问:这里的extern到底是什么类型?怎么允许重复定义?
答:
extern的功能是告诉编译器:如下变量的类型和名字已在别处声明过了,不必再为它们分配内存。当将两个模块连在一起的时候,链接程序将解决对所有外部变量的引用。
#include <iostream>
using namespace std;
int main(){
extern int x;
cout<<x<<endl;
cout<<"hello world"<<endl;
return 0;
}
//x.cpp
int x=5;
int newfunc(){
x=3;
return 0;
}
结果:
5
hello world
Press any key to continue
将x.cpp也加入项目中,另外x.cpp里面应该不能再有main函数了。
这两个文件可以分开编译,但最后还是要在一起链接。
另外,external还有如下的使用规则:
问:为什么说只有那三个声明没有定义哪?
好像也没有定义阿
答:
definition的定义是:any declaration that specifies a value is a definition.
所以这两个变量之所以成为表达式,肯定是有初值的,这个初值不是被显式赋予的,而是由于c++的体系保证了char和string类型的变量能够被自动初始化。
问:这一句:
为什么只有第一个成员声明了类型,难道三个相同类型的成员可以只声明第一个吗?
如果后两个相同哪?
另外struct里面的成员不是用分号分割吗,怎么变成逗号了?
答:
Struct与类类似,可以有成员、构造函数,析构函数等。
另外需要注意的是,c++中的成员默认是public的。
问:这一句:
里面的typedef与一般的定义于什么区别?与类的定义有什么区别?
里面的complex是什么意思?为什么不写维数就知道是二维的?
答:
typedef参看这篇文章:http://www.cnblogs.com/time-is-life/articles/832401.html
关于complex:
Ø complex不是C++的一种基本数据类型,但stl类库提供一个complex(模板)类,实现复数运算功能
Ø typedef std::complex complexd;
std::complex c;
等才是正确的用法。
Ø 3. complex是模板类,short是参数,
complex<short>代表 short类型的复数
由于复数的格式是 ai+ bj的形式,所以可以代表一个点
问: 这段描述:
为什么不能在这里赋值,应该在什么时候赋值?
[答]
首先,这里给出了什么是defenition: any declaration that specifies a value is a definition.
所以,可以分析出这里的:
Char ch;
String s;
不是没有赋初值就成为了definition,而是因为c++的体系中保证了它们可以被自动初始化。
这里的char和string不像double和int那样的初始值是0,而是会随机分配一个地址,比如d23A,但是如果再初始化完毕以后马上输出的话,输出的都将是空字符串。
不同的编译环境变量的初始值是不一样的,取决于随机数以及上次被分配的值。
比如在Dev C++中,输入下面的代码:
int c;
cout<<c;
输出的结果为2.
所以在写程序的时候不要依赖变量的初始值,尽量自己赋初值。
下面看看相关章节的描述:
10.4.2中关于成员初始化的描述:
4.9.5中关于成员初始化的描述:
对于于4.9.5中提到的章节,引述如下:
第5.7节中的描述如下:
2.5.2地描述如下:
10.2.3 的描述如下:
12.2.2 的描述如下:
从最后一段代码可以看出:原来类里面的成员可以这样初始化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架