C++的类

本文深入探讨C++中类的定义与使用,包括成员变量的权限修饰符、构造与析构函数的作用及实现方式,并介绍了如何在类内部声明与实现成员函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>

using namespace::std;

class myPoint {
private://不能被外部函数访问,也不能被继承
    int a;
    int b;
    int*p;

public://既可以访问,也可继承
    int c;
protected://不可访问,但可以继承
    int d;

protected://成员方法,也有权限,要声明在类里
    void func(int a){
    };
public:
    void func1(int a) {
        this->a=a;
    };
private:
    void func2(int b,int c)
    {
        this->b=b;
        this->c=c;
    };


//构造方法,init 对象创建时初始化对象
//和析构方法;delloc 对象销毁时释放对空间

//构造方法一般是共有的,否则不能创建对象
//构造方法的方法名与类名相同,没有返回值
//构造方法可以带参
public:
myPoint(void)
{

};
myPoint(int a,int b)
    {
    };
    //构造方法也可以重载

//如果不写构造函数,系统会自动生成一个没有实现的构造函数
    //myPoint(void)
    //{};

    //如果实现自己创建的构造的方法,系统的方法就没有了

    //析构函数,构造函数取反,没有返回值
//public:
    ~myPoint(void)
    {}
    ;
    //栈消失时,会调用,与栈共存亡
};


int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";

    //c++ 允许对象声明在栈里,声明在函数里
    myPoint point;
    point.func1(3);

    //在堆里创建对象,返回地址
    myPoint*point2=new myPoint;

//调用带参的构造方法
    myPoint *point3=new myPoint(3,4);
    delete point3;

    //new 是调用构造方法,
    //free delete 调用析构方法

//用完之后也要释放,用delete;
    delete point2; 
    return 0;
}
#include <iostream>

using namespace::std;

class myPoint
{
private:
    int x;
    int y;

public:
    //借口和实现的分离
    //在类里声明,类外实现
    //包括构造方法

    myPoint(int xx,int yy);
    void show(void);
    ~myPoint(void);

    //内联函数,代码比较小的时候,编译器翻译器翻译成宏,如果代码量比较大的时候,编译器有可能翻译成函数
    inline void show1(void);


};

//名字空间 ,名字前面家一个前置,来声明这个方法属于哪一个类的
myPoint::myPoint(int xx,int yy)
{
    return;
}

void myPoint:: show(void)
{
    return;
}

myPoint::~myPoint(void)
{
    return;
}


void swap(int &,int &);
void swap(int &a,int &b)
{
    int tmp;
    tmp=a;
    a=b;
    b=tmp;
}

int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
   //声明一个类
    myPoint point(10,20);
    //方法的调用
    point.show();

    int a;
    a=8;


    //关于指针
    //指针
    int *p=&a;
    //引用,给起一个别名,没用任何差别
    int &r=a;
    r=1;
    cout<<a<<endl;

    //纪晓岚就是纪云,是一个人

    //引用的好处
    //比如交换两个数,引用就比指针好用
    //引用只能初始化,不能赋值,一旦建立引用,就不能改了
    int x=3,y=5;
    swap(x, y);

    cout<<x<<'\n' <<y<<endl;





    return 0;
}

  这样对成员函数的实现(即函数的定义)都写在了类体内,因此类的实现部分被省略了。如果成员函数定义在类体外,则在函数头的前面要加上该函数所属类的标识,这时使用作用域运算符::。

 定义类时应注意的事项

  1、在类体中不允许对所定义的数据成员进行初始化。

  2、类中的数据成员的类型可以是任意的,包含整型、浮点型、字符型、数组、指针和引用等。也可以是对象。另一个类的对象,可以作该类的成员,但是自身类的对象是不可以的,而自身类的指针或引用又是可以的。当一个类的对象用为这个类的成员时,如果另一个类的的定义在后,需要提前说明。

  3、一般地,在类体内先说明公有成员,它们是用户所关心的,后说明私有成员,它们是用户不感兴趣的。在说明数据成员时,一般按数据成员的类型大小,由小至大说明,这样可提高时空利用率。

   4、经常习惯地将类定义的说明部分或者整个定义部分(包含实现部分)放到一个头文件中。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值