| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1137 人关注过本帖
标题:指针和new的问题
只看楼主 加入收藏
ac6300776
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2010-4-5
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:5 
指针和new的问题
#include<iostream>
class claA(
public:
double x,y;
static int num;     //静态数据成员,记录通过构造函数生成对象的个数
claA(){
x=0;y=0;
num++;             //每生成一个对象,静态数据成员num增加1
}
claA(double x0,double y0){
x=x0;y=y0;num++;
}
static void staFum(){          //静态函数成员
cout<<"current_num="<<num<<endl;
}
};
int claA::num=0;
void main(){
claA obj(1.2,3.4),*p;
cout<<"claA::num="<<claA::num<<"\t";
claA::staFun();
cout<<"obj.num="<<obj.num<<"\t";
obj.staFun();
claA A[3];          //说明具有3个对象的数组,将3次调用构造函数
cout<<"claA::num="<<claA::num<<"\t";
claA::staFun();
p=new claA(5.6,7.8);
cout<<"claA::num="<<claA::num<<"\t";
claA::staFun();
cout<<"p->num="<<p->num<<"\t";
p->staFun();
}
程序运行后,屏幕显示结果为:
claA::num=1      current_num=1
obj.num=1        current_num=1
claA::num=4      current_num=4
claA::num=5      current_num=5
p->num=5         current_num=5


问题:
1,claA obj(1.2,3.4),*p;为什么*P没有初始化,我的计算结果比正确结果多1,能详细说说怎么回事吗
2,p=new claA(5.6,7.8),解释一下
3,claA::num=1      current_num=1   它们之间为什么没换行,即为什么不是上下两行,而在一行   
搜索更多相关主题的帖子: 指针 new 
2010-05-10 22:25
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:10 
1.claA *p;只是产生一个指针p,这个指针可以指向一个claA类型的对象。就象int *a;一样,只产生一个指针,但现在还不知道它指向哪里!
   2.创建一个claA对象,并使用claA(double x0,double y0)函数为其初始化。
   3.只有cout<<endl;或cout<<'\n';时才会换行。

★★★★★为人民服务★★★★★
2010-05-11 06:52
ac6300776
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2010-4-5
收藏
得分:0 
我明白了,谢谢
2010-05-11 10:59
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1481
专家分:9055
注 册:2010-3-16
收藏
得分:0 
顶楼上。。
2010-05-11 11:01
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
收藏
得分:0 
// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;

class A
{
public:
    static int count1;      //用来统计调用默认构造函数次数
    static int count2;        //用来统计调用带参构造函数次数
    A()
    {
        m_x = 0;
        m_y = 0;
        count1++;
    }
   
    A(double x, double y)
    {
        m_x = x;
        m_y = y;
        count2++;
    }
   
    static void Print();
   
private:
    double m_x;
    double m_y;   
};
int A::count1 = 0;
int A::count2 = 0;
void A::Print()
{
    cout<<"调用了默认构造函数"<<count1<<"次"<<endl;
    cout<<"调用了带参构造函数"<<count2<<"次"<<endl;
}

int main()
{
    A obj(1.1, 1.2);   //调用带参构造函数
    A::Print();  
   
    A a[3];     //申明数组对象,调用3次默认构造函数
    A::Print();
   
    A b[3] = {A(1.5, 1.9), A(2.1, 2.2), A(3.1, 3.2)};   //申明数组对象,调用3次带参数构造函数
    A::Print();
   
    A *p;                //声明指针对象,指向位置未知
    p = new A(5.6,7.8);     //指针最好在要用时时声明,紧跟初始化
    A::Print();
   
    A *q = new A;    //给q分配空间指向A,调用无参构造函数初始化指针q指向对象
    A::Print();   
        
    return 0;
}
2010-05-11 12:04
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
顶2楼

南国利剑
2010-05-12 11:00
快速回复:指针和new的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017068 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved