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;
}

浙公网安备 33010602011771号