C++类与对象(上)

1.初识:

C语言是面向过程的,关注于过程、解决问题的具体步骤;而C++是基于面向对象的,事情拆分成不同的对象,靠对象之间的交互完成。C++并不是完全面向对象的(由于兼容了C语言)

 (1)类的引入:

在c语言中,有结构体这个概念,在结构体中可以定义各种变量。而在C++中,结构体还可以定义一些函数。

c语言结构体

struct student    //tag
{                
  int age;        // member-list     
  String name;    //member-list
  int weight;     // member-list   
}s1;             //  variable-list 

C++结构体 

struct Student
{
 void SetStudentInfo(const char* name, const char* gender, int age)
 {
 strcpy(_name, name);
 strcpy(_gender, gender);
 _age = age;
 }
 
 void PrintStudentInfo()
 {
 cout<<_name<<" "<<_gender<<" "<<_age<<endl;
 }
 
 char _name[20];
 char _gender[3];
 int _age;
};

 (2)类的定义

C++中的结构体定义,在C++中会被用类替代

class student
{
    //可写入成员函数、成员变量
};  //注意花括号后的分号,这与java不同

类的定义以class关键字开始,分号结束,类中的元素是类的成员,类中的数据为成员变量或成员属性,类中的函数为类的成员函数

***提问:C++中结构体、类的异同:

 两者的定义方式相似,使用成员的方式也相似(struct:结构变量名.变量名;class:实例化的对象名.成员名)

struct的成员默认的访问方式是public,而class默认的成员访问方式是private

(3)访问限定符

C++通过限定符来对数据进行封装:

public:公有,修饰的成员可在 类外被访问

protected:保护,修饰的成员不能在类外直接访问,可被派生类访问

private:私有,修饰的成员只有本类的成员、友元(之后会说到)访问

(4)类的作用域

 类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用 :: 作用域解析符 指明成员属于哪个类域。

(5)类的实例化

1. 类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它 2. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量 3. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什 么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占 用物理空间

类名 对象名

void TextClass()
{
    Student s1;
    s1.name="Alice";
}

(6)类中对象的存储方式

只保存成员变量,成员函数存放在公共的代码段 

一个类的大小,实际就是该类中”成员变量”之和,当然也要进行内存对齐,注意空类的大小,空类比 较特殊,编译器给了空类一个字节来唯一标识这个类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值