随笔 - 547  文章 - 213 评论 - 417 阅读 - 107万

问:这里的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 的描述如下:

从最后一段代码可以看出:原来类里面的成员可以这样初始化。

posted on   今夜太冷  阅读(827)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示