用*, 表示创建的是一个指针对象,而指针的创建,必须初始化,C++中用new关键字开辟内存。

另外指针对象访问成员变量用-> , 非指针用. 就这么个原则

但是指针也可以不用-> 例如 (*p).age  所以->其实就是先*后.的简写吧

#ifndef MyArray_hpp
#define MyArray_hpp #include <stdio.h> class MyArray { public:
MyArray();
MyArray(int capacity);
MyArray(const MyArray& array); ~MyArray(); //尾插法
void push_Back(int val); //根据索引获取值
int getData(int index); //根据索引设置值
void setData(int index,int val); private:
int *pAdress;
int m_Size;
int m_Capacity; }; #endif /* MyArray_hpp */
#include "MyArray.hpp"
#include <iostream>
using namespace std; MyArray::MyArray()
{
this->m_Capacity = ;
this->m_Size = ;
this->pAdress = new int[this->m_Capacity];
} MyArray::MyArray(int capacity){
this->m_Capacity = capacity;
this->m_Size = ;
this->pAdress = new int[this->m_Capacity];
} MyArray::MyArray(const MyArray& array){ this->pAdress = new int[array.m_Capacity];
this->m_Size = array.m_Size;
this->m_Capacity = array.m_Capacity;
} MyArray::~MyArray(){ cout << "析构函数调用" << endl;
if (this->pAdress != NULL) {
delete [] this->pAdress;
this->pAdress = NULL;
} } void MyArray::push_Back(int val){
this->pAdress[this->m_Size] = val;
this->m_Size++;
} int MyArray::getData(int index){
return this->pAdress[index];
} void MyArray::setData(int index, int val){
this->pAdress[index] = val;
}
void test01(){

    MyArray *array1 = new MyArray();
//(MyArray *) array1 = 0x0000000100648440 MyArray array2;
/*
{
pAdress = 0x0000000100649240
m_Size = 0
m_Capacity = 100
}
*/
MyArray array = MyArray();
/*
{
pAdress = 0x000000010064b680
m_Size = 0
m_Capacity = 30
}
*/
}

这位老师说的很细 https://blog.csdn.net/qq_35644234/article/details/52702673

C++创建对象时什么时候用*,什么时候不用*的更多相关文章

  1. C++之创建对象时的new与不new

    C++在创建对象的时候可以采用两种方式:(例如类名为Test) Test test  或者 Test* pTest = new Test(). 这两种方法都可以实例化一个对象,但是这两种方法有很大的区 ...

  2. 创建对象时引用的关键字,assign,copy,retain

    创建对象时引用的关键字:assign: 简单赋值,不更改索引计数(强引用)copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索 ...

  3. C#创建对象时各种初始化属性、字段的方式的执行顺序

    创建对象代码如下: new FilterInfo(Student.CreateTimeProperty,"朱七",Express.Equals,Relationship.Or) { ...

  4. 编写高质量代码改善C#程序的157个建议——建议10: 创建对象时需要考虑是否实现比较器

    建议10: 创建对象时需要考虑是否实现比较器 有对象的地方就会存在比较,在.NET的世界中也一样.举个最简单的例子,在UI中,有一个10个人的Salary列表.根据排序的需要,列表要支持针对基本工资来 ...

  5. C#程序编写高质量代码改善的157个建议【10-12】[创建对象时需要考虑是否实现比较器、区别对待==和Equals]

    前言 建议10.创建对象时需要考虑是否实现比较器 建议11.区别对待==和Equals 建议12.重写Equals时也要重写GetHashCode 建议10.创建对象时需要考虑是否实现比较器 有对象的 ...

  6. 对spring创建对象时为何要使用接口

    对spring创建对象时为何要使用接口,而使用接口的实现类会报错 接上一篇问题的解答:Spring AOP获取不了增强类(额外方法)和无法通过getBean()获取对象 此问题发生在动态代理时,比如对 ...

  7. 用构造函数创建对象时的this的指向问题

    用构造函数方式创建对象: function Person(name,age){ this.name=name; this.age=age; this.sayname=function(){ alert ...

  8. Object-C使用类静态方法创建对象时容易内存泄露

    1.所谓使用类的静态方法创建对象,就是指使用类名调用一次它的静态方法(非显式调用alloc)便可以得到一个新建的对象,比如下面两个例子: NSString* str1 = [NSString stri ...

  9. Java中string 创建对象时 “”和null的差别

    null和""的差别 问题一: null和""的差别 String s=null; string.trim()就会抛出为空的exception String s ...

随机推荐

  1. oracle系统调优

    在Oracle数据库系统中,起到调节作用的参数叫初始化参数,在Oracle 8i及以前的版本中,这些初始化参数记录在INITsid.ora文件中:而Oracle 9i/10g/11g中将这些参数记录在 ...

  2. VMware 虚拟化编程(9) — VMware 虚拟机的快照

    目录 目录 前文列表 VMware 虚拟机的快照 快照的执行过程 删除快照 快照类型 Quiseced Snapshot 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDis ...

  3. UI自动化之特殊处理一(iframe\句柄\鼠标键盘)

    iframe\句柄\鼠标键盘是一些比较特殊的事件,需要特殊处理 目录 1.iframe 2.句柄(handle) 3.鼠标键盘 1.iframe iframe 是内嵌的网页元素,也可以说是内嵌的框架, ...

  4. PHP多图片上传 并检查 加水印 源码

    参数说明:$max_file_size : 上传文件大小限制, 单位BYTE$destination_folder : 上传文件路径$watermark : 是否附加水印(1为加水印,其他为不加水印) ...

  5. Java ——日期时间 日期时间相关类 随机数 定义类属性时建议使用引用数据类型

    本节重点思维导图 Date对象创建 两个构造函数: Date() ----使用当前日期和时间来初始化对象 Date(long millisec) -----接收一个参数,该参数是从1970年1月1日起 ...

  6. pycharm运行时出现‘no module named 'requests'’

    参考文章:https://www.jianshu.com/p/f7c808365a9e 出现无requests的包的错误--->找包中是否有requests 1.从files下拉框中点击sett ...

  7. String 和 new String()的区别

    String 和 new String()的区别 For Example String str1 = "ABC" String str2 = new String("AB ...

  8. Flutter修改状态栏颜色以及字体颜色

    Flutter沉浸式状态栏 void main() { runApp(MyApp()); if (Platform.isAndroid) { // 以下两行 设置android状态栏为透明的沉浸.写在 ...

  9. win10系统Docker和VMware WorkStation共存,远程工具连接Docker

    摘要:win10安装docker进行学习的两种途径: Docker for Windows Installer.exe(地址https://download.docker.com/win/stable ...

  10. C#网络编程 多线程和高并发

    在任何 TCP Server 的实现中,一定存在一个 Accept Socket Loop,用于接收 Client 端的 Connect 请求以建立 TCP Connection. 在任何 TCP S ...