关于C++类的数据成员的存储类型,为什么不能是auto、register和extern-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于C++类的数据成员的存储类型,为什么不能是auto、register和extern

2016-03-09 13:37:04 4245 1

C++中类的存储类型不能是register和extern可以理解,但为什么不能是auto类型的呀?在结构体中同样出错,在函数中不出错,什么情况?

 #include<iostream>
#include<cmath>
using namespace std;

class complex
{
private:
    auto double real;//编译时此处有错误illegal storage class
    double imaginary;
public:
    void initail(double r,double i)
    {
        real=r;
        imaginary=i;
    }
    double absolute()
    {
        return sqrt(real*real+imaginary*imaginary);
    }
};

int main()
{
    complex c;
    c.initail(3,4);
    cout<<"complex c's absolute value is  "<<c.absolute()<<endl;
    func();
    return 0;
}
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 18:55:56

    auto/register/extern表示的是变量的存储位置和作用域。auto变量存储在函数的堆栈空间,register存储在寄存器,extern表示这里没有新定义变量,只是扩展了一个已有全局变量的作用域。类和结构体中的变量是成员变量,其存储位置和作用域由定义对象的函数决定,不由这些对象自己决定。
    例如,你定义了一个类,complex,然后你在函数main中有如下语句:

    auto complex c;
    这就表示c这个对象在函数堆栈中存储。那么,c中的real和imaginary自然也在堆栈中了。同时,他们的生存期也仅限于函数内部。因此,你不需要,也不能单独给对象的成员变量规定存储位置和作用域。
    PS:auto/register现在已经很不常用了,并不建议再用这两个关键字。

    0 0
相关问答

1

回答

在大规模订单系统中,对于 C 端客户以及面向 C 端的开发而言,系统需要支持什么功能?

2022-05-07 21:06:00 156浏览量 回答数 1

1

回答

Kafka里的cmdl32.exe的作用和操作类型是什么?

2021-12-07 18:57:23 123浏览量 回答数 1

0

回答

RDS的MySQL数据库的ibtmp1爆增,用户能设置autoextend参数吗?

2021-04-09 15:22:18 312浏览量 回答数 0

1

回答

新人求问,连不上数据库,Unable to create initial con?400报错

2020-06-06 21:23:40 255浏览量 回答数 1

1

回答

#支付宝 isv.app-cert-not-exist(应用公钥证书不存在),怎么办?

2020-05-05 17:04:27 6111浏览量 回答数 1

1

回答

Spark Streaming作业运行一段时间后无故结束?

2020-03-20 10:02:00 421浏览量 回答数 1

1

回答

关于gpt分区表+uefi启动方式下的双系统(win10下安装ubuntu)win10的重启引导蓝屏问题

2019-02-20 16:59:51 3280浏览量 回答数 1

2

回答

昨天买MaxCompute了10个CU包月了,但是SQL根本执行不出来。表里根本没数据。

2017-11-08 14:15:12 3568浏览量 回答数 2

3

回答

我一包含#Include conf/extra/httpd-ssl.conf这个文件就连网页都不能访问了

2016-11-07 19:43:41 2977浏览量 回答数 3

1

回答

求MYSQL数据库中关于CREATE SCHEMA的问题

2016-02-14 16:12:05 2199浏览量 回答数 1
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载
低代码开发师(初级)实战教程
立即下载