c++中类的随笔

1.(2005年计算机二级考试)
#include<iostream>
using namespace std;
class Demo
{
public:
    Demo(){cout<<"default constructor"<<endl;}
    Demo(const Demo &x){cout<<"copy constructor"<<endl;}
};
Demo userCode(Demo b)//调用了一次Demo(const Demo &x)
{
    Demo c(b);//调用了一次Demo(const Demo &x)
    return c;//在return之前会自动析构,所以要想返回就又调用了一次Demo(const Demo &x),但由于编译器的优化我的codeblock运行结果显示不出来,而在vc上运行好像是可以显示出来的
}
int main()
{
    Demo a,d;//调用了两次Demo()
    d=userCode(a);
    return 0;
}
题目:构造函数Demo()和Demo(const Demo &x)分别调用了(2)次和(3)次
运行结果:(两次和两次的原因在上文中说到,copy constructor应有三次)
default constructor
default constructor
copy constructor
copy constructor

2.(2005年计算机二级考试)
类的每个非静态成员函数都有this指针,静态成员函数无this指针
类的非静态成员函数访问数据成员时,隐含是以"this->数据成员名"的形式访问的
#include<iostream>
#include<string>
using namespace std;
class Student
{
private:
    string name;
public:
    Student(string Name)
    {
       this->name=Name;//将this->去掉是相同滴
    }
    string getname()
    {
        return name;
    }
    void show()
    {cout<<getname()<<endl;}
};
int main()
{
    Student s("aaa");
    s.show();
}

3.
在主函数中(是否生成对象)
int main()
{
   MyClass p1;//新对象,调用构造函数
   MyClass *p2;//无对象,不调用构造函数
   p2= new MyClass ("X");//新对象,调用带参数的构造函数
}
或者:
MyClass a,b[2],*p[2];//其中*p[2]是指针,地址指向对象,但本身不是对象,所以不调用构造函数

4.(易错点,动态申请空间后的运用)
int main()
{
    MyClass  *p=new MyClass();
    (*p).Print();
    return 0;
}










评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值