c++学习笔记2,类

类的定义

class 类名:myclass{
myclass();//构造函数
~myclass();//析构函数
myclass(mycalss &a);//拷贝构造函数
privat://缺省为私有
//私有变量和函数
public: 
//公有变量和函数
protect:
//受保护的变量和函数
int func();//函数声明
};

int myclass :: func(){
//可以在函数外实现
}

类的声明包括在花括号内,结尾注意加分号。

具体说明

类内部的变量和函数称为成员变量和成员函数,访问权限参考三种访问权限,作用范围是范围说明以下至下一个范围声明为止

class myclass{
private:
int a;

public:
int func();
int b;

private:
int c;
};

缺省默认为private。

函数在类体内定义默认为内联函数,在外定义要在方法名前加上类的作用域,也可以在前面加上inline在外面定义内联函数。

类至少包含一个构造函数、析构函数和拷贝构造函数,缺省时编译器自动添加。

构造函数没有返回类型,与类同名,可以重载,在使用时调用来构造一个类。

析构函数没有返回类型,在类名前加“~”,在销毁类时调,用来释放申请的空间,缺省默认添加。

拷贝构造函数是构造函数的重载,用来实现一个对象来创键同类对象的,缺省默认添加,默认实现是值拷贝,如果涉及指针,需要自行定义,否则会出现同一个指针删除两次的运行时错误。参数为对象的引用。

错误示例,返回值非0。注释部分为修正。

#include <iostream>
using namespace std;
class Arr
{
private:
    int *p; /* data */
public:
    Arr(/* args */);
    ~Arr();
    Arr(Arr &a);
    /* code */
};
Arr::Arr(/* args */)
{
    p = new int[10];
    cout << "create" << endl;
}

Arr::~Arr()
{
    delete[] p;
    cout << "delete" << endl;
}

Arr::Arr(Arr &a)
{

    // p = new int[10];
    // for (int i = 0; i < 10; i++)
    // {
    //     p[i] = a.p[i];
    // }
    cout << "copy" << endl;
}
void func()
{
    Arr a;
    Arr b(a);
}
int main()
{
    func();
    system("pause"); // 用于在Windows系统上暂停程序,防止控制台窗口关闭
    return 0;        // 返回0表示程序正常退出
}

静态成员

静态变量并不会被共享,对象间的静态变量互不影响,需要在类外定义。静态函数可以使用类名::方法名调用,不需要建立对象,同样的静态变量可以这样使用。

对象数组

对象数组的定义和普通数组一样,但是注意如果只有有参构造方法时,需要在定义时进行有参构造,在有构造参数定义时系统不会提供默认无参构造方法。

class myclass{
int a;
myclass(int i){
a=i;
}
};
int main(){
myclass arr [2]= {myclass(1),myclass(2)};//定义时调用构造
return 0;
}

posted @ 2024-04-13 18:53  CV小能手chh  阅读(20)  评论(0)    收藏  举报  来源