• 我对C++的一些疑问


    我对C++的一些疑问,最近使用C++,总感觉有些东西自己没有抓住,也可能是自己基础学的不是很扎实,所以对一些基本的东西理解不够透彻导致的。
    因为自己在学校也学过C#和java,C#它是一个完全的面向对象的语言,所以没有这么麻烦,在C#中除了基本的几种值类型,其他的一切都是对象,都是Object的子类。

    我的疑问如下:
    1、在C#中对象声明并不开辟存储空间,直到调用类的构造函数显示的初始化对象,之后才会开辟空间,而在C++中,对象声明之后就会自动调用默认构造函数,这样,是不是已经开辟了存储
    空间了呢?

    自己的回答:C++中调用构造函数有几种方式,如 Point p;此时,会自动调用类Point的默认构造函数,而且默认系统会自动为C++中的一个类生成3个默认构造函数,分别是:无参默认构造函数、拷贝构造函数、赋值构造函数。所以C++中声明时即为此对象开辟了存储空间。这里需要注意C++中的new和C#中new的区别。C++中new是在堆上开辟一段内存存储对象元素。而C#中new是为了显示调用构造函数实例化对象。

    2、还有就是在编程中,往往需要给函数传递参数,而参数可能是地址,那么是不是不能传递局部对象的地址呢?如果遇到这种情况,一定需要用new在堆上创建对象么?那么这样又出现了对
    象释放的问题。该怎么处理呢?

    自己的回答:此时就应该使用new在堆上上创建对象,在对象不用时销毁对象。其实实现起来也不是那么麻烦,只是可能因为牵涉到指针操作,所以在做之前就认为很难,其实真的做起来,只要考虑完全,操作指针还是很方便的。

    3、

    未完待续。。。

  • 相关阅读:
    第一次作业-编译原理概述
    node 升级版本,指定的版本
    v-show,v-if切换组件echarts显示不全的问题
    js点击特效动画,小人动画
    路由懒加载
    echarts tree 点击动态添加子集实例
    echarts中数据过多加入滚动条,相关属性dataZoom介绍
    解决echarts x轴标签文字过多导致显示不全
    element-ui 单选框点击整个行为选中状态
    Eclipse上Maven环境配置使用
  • 原文地址:https://www.cnblogs.com/lit10050528/p/3639397.html
Copyright © 2020-2023  润新知