碎碎念C++(一)冗杂问题

学习C++的这两个月,深刻觉得C++的语法实在是太复杂了,而且每一个新标准都添加了大量的东西。

然而,我擅自认为,有许多东西显得冗杂了些。

比如对动态内存的初始化有这么一种东西:

auto p = new auto(obj);

其含义是p指向一个与obj类型相同的对象,该对象用obj进行值初始化。

第二个auto推断obj类型,第一个auto推断指针类型。

例如这个程序:

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

int main(void) {
    //1.
    auto pi = new auto(1234);
    cout << *pi << endl;        //print 1234
    //2. 等价于1.
    int *pi2 = new auto(1234);
    cout << *pi2 << endl;       //print 1234
    //3. 更传统的方法
    int *pi3 = new int(1234);
    cout << *pi3 << endl;       //print 1234

    return 0;
}

我认为更传统的方法,更直观、更便于阅读、更利于维护。

那么,让auto去推断obj类型是语句是否显得冗杂了些呢?

既然一种规则存在,通常就会有人去使用它。当这样“看起来很多余”的规则变成了几十条、几百条。。。之后,对于人的记忆力就是极大的考验。


语言的规则本身并不难,试图让语言的用法更容易被更多人学习而增加太多东西的话,有时候会显得画蛇添足,反而增加了语言的复杂性,垒高了学习壁垒。

这未必是一件好事。o(╯□╰)o


2016/11/13补充:

这个例子举得并不好,因为这可以归纳为auto的使用。

auto的使用非常灵活,各种推断,因此需要对语言有比较扎实的认知才能很好的使用auto。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值