C++学习笔记(二):类与对象--类的创建

类定义

class example_A
{
private:            //私有成员
    int a;          
    int b;          
public:             //公有成员
	void sum();		//成员函数
    example_A();    //构造函数
    ~example_A();   //析构函数
protected:          //保护成员
};
成员类型
  • private私有成员:只能由类成员(类内)和友元访问。
  • public 公有成员:类内外的所有程序都能访问这些成员。
  • protected保护成员:可以被派生类对象访问,不能被类外的程序访问。
构造函数与析构函数
  • 构造函数:一般以类名来命名,是在新创建的对象时自动调用的函数。如果定义类时没写构造函数,编译器会自动生成一个缺省的构造函数。
  • 构造函数中需要写入所有成员变量的初始化,也可以理解为一个类初始化函数,根据书写差异,构造函数可以将变量初始化为默认值:
  • 默认初始化
example_A::example_A()    //构造函数构建
{
	a = 0;
	b = 0;
}
  • 那么在创建对象时候就可以直接写作
example_A* ex_A = new example_A();	//指针对象
example_A ex_B;					
  • 也可以初始化为传入的值:
  • 传入值初始化
example_A::example_A(int x ,int y):a(x),b(y)//构造函数构建1
{
	;
}
example_A::example_A(int x ,int y)://构造函数构建1
{
	a = x;
	b = y;
}

在创建对象时候就可以直接写作,将成员初始化为1,2

example_A* ex_A = new example_A(1,2);	//指针对象
example_A ex_B(1,2);							
  • 相对,析构函数就是在对象消亡时即自动被调用。可以定义析构函数在对象消亡前做善后工作,如果定义类时没写析构函数,同样编译器会生成一个缺省的析构函数。例如,如果构造函数中有用new来初始化的变量时,需要在析构函数中对其使用delete进行回收。
example_A::~example_A()
{
   	cout << over << endl;
}
  • 在析构函数中写入一段输出,运行以下代码
int main()
{
   example_A* ex_A = new example_A(1,2);
   example_A ex_B  (1,2);
   //ex_A 为new定义需要手动delete,而ex_B会在程序退出自动释放
   delete ex_A;
   return 0;
}
  • 结果为
over
over
公有成员函数(对私有成员操作)
  • 既然私有保护成员不能被外部代码访问(也就是调用,使用),那我们想更改或获取私有/保护成员的值就要通过公有成员中的成员函数来对私有/保护成员操作;
    对私有函数操作的公有函数
void example_A::mun()
{
    int c = a + b;
    cout <<"a+b="<< c << endl;
}
  • 废话不多说,上代码,看实际调用效果
int main()
{
    example_A* ex_A = new example_A(1,2);
    example_A ex_B  (5,6);
    cout << "ex_A调用结果:" << endl;
    ex_A->mun();
    cout << "ex_B调用结果:" << endl;
    ex_B.mun();
    delete ex_A;
    return 0;
}
  • 输出结果为;
ex_A调用结果:
a+b=3
ex_B调用结果:
a+b=11
over
over
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值