-
深拷贝,两个对象指向不同的地址
查看全部 -
浅拷贝内存中,对象指向同一地址
查看全部 -
浅拷贝代码
查看全部 -
同样的访问限定符(public,private等)可以出现多次
查看全部 -
对象指针:
查看全部 -
数组coord[1]访问的是第二个数组,数组第一个编号为0
查看全部 -
指针访问数据成员可以p-> 也可以(*p).
查看全部 -
浅拷贝:拷贝后指针指向相同的内存。
深拷贝:申请新的内存,逐位存放内容
查看全部 -
输入坐标参数两位,利用初始化列表
查看全部 -
栈:类名 对象[数组长度];
对象[序列数].函数名/变量名。。。
堆:类名 *p=new 类名[数组长度];
p->函数名/变量名。。。
p[序列数].函数名/变量名。。
p++以后 p[序列数]的序列数对应变更到当前位置,此时若执行输出,指针位置已改变,则循环输出时执行p--;这样会影响到释放内存时指针位置出错,则循环外p++再delete
查看全部 -
定义具有2个对象的Coordinate数组,遍历对象数组,打印对象信息
结果如图所示
#include <iostream>
using namespace std;
class Coordinate
{
public:
Coordinate()
{
}
// 打印坐标的函数
void printInfo()
{
cout<<"("<<m_ix<<","<<m_iy<<")"<<endl;
}
public:
int m_ix;
int m_iy;
};
int main(void)
{
//定义对象数组
Coordinate coorArr[2];
coorArr[0].m_ix=1;
coorArr[0].m_iy=2;
coorArr[1].m_ix=3;
coorArr[1].m_iy=4;
//遍历数组,打印对象信息
for(int i = 0; i < 2; i++)
{
coorArr[i].printInfo();
}
return 0;
}
对象数组就好比结构体数组。两者有相似之处。
查看全部 -
常成员函数详解
声明:<类型标志符>函数名(参数表)const;
说明:
(1)const是函数类型的一部分,在实现部分也要带该关键字。
(2)const关键字可以用于对重载函数的区分。只有普通对象调用普通函数,常对象调用常函数。
(3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。
常函数const,修饰的是隐含this指针,不允许修改非指针数据成员
查看全部 -
常成员
const int m_iX;
const int m_iY;
只能在初始化列表
查看全部 -
\后端开发
\C++
使用new申请新空间,类后面必须有括号吗?
比如 Car *p = new Car(); 后面的括号是必要的吗?
2017-08-21源自:C++远征之封装篇(下) 4-2592 浏览1 回答
最佳回答
2017-08-21
(1)加括号
1. 若括号里为空,即无实参项,调用默认构造函数;
2. 若括号里非空,即有实参项,调用重载构造函数或复合默认构造函数。
(2)不加括号
调用默认构造函数,或复合默认构造函数。
查看全部 -
\后端开发
\C++
请问这样定义对象并赋值有什么问题呢?运行会报错……
Coordinate *p2;
p2->m_iX=10;
p2->m_iY=20;
cout<<p2.m_iX<<endl;
cout<<p2.m_iY<<endl;
2017-12-11源自:C++远征之封装篇(下) 4-2578 浏览1 回答
最佳回答
2017-12-11
Coordinate *p2;
这个指针没有实例化 是空指针
拓展:
Coordinate *p2 = new Coordinate();//在堆上实例化,用p2指针指向这个内存
Coordinate p3();//在栈上实例化,得到p3对象
Coordinate *p4 = &p3;//p4指针,指向这个p3对象的内存
拓展2:
使用对象用 .
使用指针用 ->
p2->m_iY
p3.m_iY
p4->m_iY
+2积分什么是积分?
举报 回复 1
慕的地8223948 (提问者)
就是说空指针无法操作吗?
#12017-12-15 回复 举报
WORLD_CONNECTED 回复 慕的地8223948:
你空指针,指向啥?
int * a = new int();
a可以操作int的值,
int * a ;
a没有赋值。
a的值是随机的。
你可以这样想,你定义了int *a,没有给她赋值,她可能会指向你的USB接口,这不会是你想要的查看全部
举报