注册 登录
编程论坛 C++教室

"指针"与"类"

hackerpc2ya 发布于 2010-04-04 13:18, 1026 次点击
#include <iostream>
using namespace std;
class Human
{
public:
Human(){cout<<"构造函数执行中...\n";i=999;}
private:
int i;
};

int main()
{
Human *p=new Human;
return 0;
}

Q1:main函数中的第2行一定要用Human类的指针嘛?
如果不行为什么?
10 回复
#2
书呆2010-04-04 13:53
以下是引用hackerpc2ya在2010-4-4 13:18:42的发言:
......................
Q1:main函数中的第2行一定要用Human类的指针嘛?
如果不行为什么?
如果要动态创建就必须用指针,否则 Human human; 也是可以创建Human对象的
#3
hackerpc2ya2010-04-04 14:41
还是不太懂
我的意思是
一定要Human *p
不能用int *p or double *p嘛?
#4
one_june2010-04-04 15:42
可以...
#5
书呆2010-04-04 17:05
回复 4楼 one_june
别把人教坏了

如果用别的指针指向Human对象,比如,void *human = new Human; 也能通过编译,(但int *或double *不行)
但这是有危险的。什么类型的指针最好就指向什么类型的对象。

另外,在面向对象中,可以用父类的指针指向子类的对象,这叫多态。
#6
阿邋2010-04-05 10:25
int human = (int)new Human();
这样行了,呵呵
#7
hblikun2010-04-13 00:32
Human *p=new Human;
动态创建一块内存空间,占用一个Human对象的大小,用指针p指向这个内存空间,明白了吗?
#8
brantyou2010-04-13 18:58
来学学
#9
hsnr2010-04-14 06:48
类和指针式C++两个最重要又最有用的概念,我觉得。
#10
南国利剑2010-04-14 11:03
以下是引用hackerpc2ya在2010-4-4 14:41:19的发言:

还是不太懂
我的意思是
一定要Human *p
不能用int *p or double *p嘛?
指向Human的最好用的Huamn指针,或者用void 指针(但具体用是还是要强制转化成Human的指针),用其他的指针即使编译器不报错也是很危险的.
#11
缝小肛2010-04-15 21:59
建议!!!! 动态申请内存,就是用new关键字申请的内存。
他是放在堆中的。他不随程序的结束而释放,
所以我们要养成习惯 用delete 释放掉。
释放之后 指针负空;就是NULL;
这样可以有效防止野指针。切记。

谈论下上面的问题 你也可以不用类名定义 指针,但是 强烈要求不要那么做。
因为指针这个东西 一旦搞不好 会让你崩溃的,实例多不胜数。
为什么 要让你用类名定义 指针 ?
因为 工作之后所接触的代码很多,也很长 用类名 (Human *p=new Human;)这样定义
这样可以有效控制 指针的活动范围。
1