解决C++全局变量只能初始化不能赋值的问题
C++中,全局变量只能声明、初始化,而不能赋值
也就是说,下面这样是不被允许的:
#include <cstdio> using namespace std; int a; a = 2; int main() { return 0; }
错误提示是:
C++ requires a type specifier for all declarations
声明、初始化与赋值的区别:
声明:int a;
初始化:int a = 2;(在声明的时候顺带赋值叫做初始化)
赋值:a = 2;
只有定义(int a;)才分配存储空间,初始化必须要有存储空间来初始化
全局变量在声明时候顺带赋值(也就是初始化)是可以的,但是如果先声明,不赋值,之后再赋值的话,程序是执行不到这里的,也无法通过编译。
以上这篇解决C++全局变量只能初始化不能赋值的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
关于C++类的成员初始化列表的相关问题
在以下四中情况下,要想让程序顺利编译,必须使用成员初始化列表(member initialization list): 1,初始化一个引用成员(reference member): 2,初始化一个常量对象(const member); 3,调用一个基类的构造函数,且该基类的构造函数有一组参数: 4,调用一个成员类(member class)的构造函数,且该构造函数有一组参数 这四种情况程序可以正常编译,但是效率有所欠缺(下面会具体说到). class Word{ String _name; in
-
C++中静态初始化数组与动态初始化数组详解
静态初始化的数组的长度必须是在程序中确定的常数,不能是由用户输入的变量 例子: int a[10];//正确 Student stud[10];//正确:Student是一个学生类 int n;cin>>n;int a[n];//错误 int n;cin>>n;Student stud[n];//错误:Student是一个学生类 动态初始化数组可以使用用户输入的变量作为数组的长度. 例子: int n; cin>>n; int *a=new int[n];//这样整数数
-
C++使用初始化列表的方式来初始化字段的方法
几个月之前,接触Android recovery源代码的时候,看ScreenRecoveryUI类的时候,那时候C++基础还不是特别好,一直不明白以下的初始化方式: 下面这个是Recovery的一个构造函数,代码位于:screen_ui.cpp,它的类的实现在screen_ui.h. 如下这个ScreenRecoveryUI类,这个类是继承于RecoveryUI类的: 这个文件在screen_ui.h class ScreenRecoveryUI : public RecoveryUI { pu
-
成员初始化列表与构造函数体中的区别详细解析
论坛中回答一个别人问题 C++ Primer中在讲构造函数初始化列表的时候有这么一段话:无论是在构造函数初始化列表中初始化成员,还是在构造函数体中对它们赋值,最终结果是相同的.不同之处在于,使用构造函数初始化列表的版本初始化数据成员,没有定义初始化列表的构造函数版本在构造函数体中对数据成员赋值. 请问这里的初始化数据成员与对数据成员赋值的含义是什么?有什么区别? 我知道在数据成员有默认构造函数时是有不同的,但对其他类型的成员呢?其他类型成员的初始化和赋值有区别吗?================
-
C++中各种初始化方式示例详解
前言 本文主要给大家介绍了关于C++初始化方式的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. C++小实验测试:下面程序中main函数里a.a和b.b的输出值是多少? #include <iostream> struct foo { foo() = default; int a; }; struct bar { bar(); int b; }; bar::bar() = default; int main() { foo a{}; bar b{}; std::co
-
C++初始化列表学习
何谓初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段.在C++中,struct和class的唯一区别是默认的克访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示. 复制代码 代码如下: struct foo{ string name ; int id ; foo(string s, int i):name(s), id(i){} ; // 初始化列表}; 构
-
C++ 初始化列表详解及实例代码
C++ 初始化列表 何谓初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段.在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示. struct foo { string name ; int id ; foo(string s, int i):name(s), id(i){} ; // 初始化列表 }; 构造函数的两个执行
-
C++ 11新特性之大括号初始化详解
本文主要给大家介绍了关于C++11新特性之大括号初始化的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: C++11之前,C++主要有以下几种初始化方式: //小括号初始化 string str("hello"); //等号初始化 string str="hello"; //大括号初始化 struct Studnet{ char* name; int age; }; Studnet s={"dablelv",18}; //
-
c++基础语法:构造函数初始化列表
C++为类中提供类成员的初始化列表 类对象的构造 顺序是这样的:1.分配内存,调用构造函数 时,隐式/显示的初始化各数据 成员2.进入构造函数后在构造函数中执行一般计算 使用初始化列表有两个原因: 1.必须这样做:如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法完成第一步,就会报错. 复制代码 代码如下: class ABC .
-
c++ 构造函数的初始化列表
首先,运行下图中的C++代码,输出是什么? 复制代码 代码如下: class A{private: int n1; int n2;public: A(): n2(0) , n1(n2 + 2) { } void Print() { cout<<"n1:"<<n1<<",n2:"<<n2<<endl; }};int main(void){ A a; a.Print(); return 0;} 答案:输出n1
随机推荐
- PHPstorm快捷键(分享)
- PowerShell中的加法运算详解
- 用JS做的简单的可折叠的两级树形菜单
- 根据USER-AGENT判断手机类型并跳转到相应的app下载页面
- Java线程池的几种实现方法及常见问题解答
- 分享一个取自HoverTree项目的.NET分页类
- [PHP]实用函数7
- ActiveMQ在C#中的应用示例分析
- mac下安装mysql忘记密码的修改方法
- php模仿asp Application对象在线人数统计实现方法
- jQuery中Ajax的get、post等方法详解
- 基于jsp+servlet实现的简单博客系统实例(附源码)
- 本地 二级域名配置方法
- jQuery实现不断闪烁文字的方法
- jquery 常用操作整理 基础入门篇
- Linux下虚拟域名的实现(1)
- Javascript 高性能之递归,迭代,查表法详解及实例
- SQL+C#实现获得当前月的第一天与最后一天
- PHP统计当前在线用户数实例讲解
- 数字奥运引发建站热 主机市场供求两旺