码迷,mamicode.com
首页 > 编程语言 > 详细

c++第一讲,结构,权限修饰符,类,以及类的代码组织。

时间:2019-10-19 00:22:32      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:语言   pac   数据   知识   day   访问级别   style   结构体   修饰符   

 

 

 

 

c++中的结构和c中的结构有什么区别?

  c++中结构除具备了c中结构的所有功能外,还增加了很多拓展功能,其中最突出的拓展功能之一就是:c++中的结构不仅有成员变量,还可以定义成员函数(或者说方法)

 

权限修饰符:public private protect

public:公共的意思,用这个修饰结构/类中的成员变量/成员函数,就可以被外界访问。一般我们需要能够被外界访问的东西,就定义为public就好像是该类的外部结构一样,也就是在类的作用域外也还可以使用。

private:私有的意思,用这个修饰符修饰。结构/类中的成员变量/成员函数,只有被内部定义的成员函数才能使用,也就是只有在类的成员函数内能用。当类的成员变量被声明为私有,则只能在类中定义的成员函数中能用。如果一个成员函数被声明或定义成私有,则改成员函数只能在类中定义的成员函数中使用。也就是说外界看不到private声明或定义的变量,在外界看来就好像没有一样。

protect:欲知后事,且听下回分解。这个等到以后来说。

 

结构和类的区别

  1)类这个东西,只在c++中才有这个概念,c中没有这个概念

  2)结构用struct定义,类用class定义。我们定义一个属于该结构的变量,我们叫结构变量我们定义一个属于该类的变量,我们叫对象

    

struct date
{
    int year;
    int month;
    int day;
 };
struct date oneday;  // struct date   是类型名,我们自己定义的类型。然后用我们自己定义的类型,定义一个属于该结构的变量,变量名叫oneday
int a;               //定义一个属于int的变量,变量名叫a。在不理解,只能说你还得从c语言学了 
class student
{
public:
    char name[20];
    int age;
    int number;
}
student zhangsan;  //定义一个属于该类的变量,通常称为对象。对象名叫zhangsan

 

 

 

  3)结构变量内部变量及其成员函数默认的访问级别都是public,也就是在外部都能访问。类内部成员变量和成员函数默认的访问级别都是private。

  4)c++结构体继承默认都是public,而c++类的继承默认都是private。

总结一下:结构和类唯一的区别,就是结构默认是public,而类默认是private。结构中也可以定义成员函数,正常人不这么干,但是可以定义构造函数,这个和类类似,构造的时候初始化内存。也许你现在看不懂但是以后会慢慢明白的。再说一下,在c++中,结构是用来定义变量的,所以在结构里边很少会定义函数。我们就把它当一种类型来使用。所以为了规范,当类中没有方法是,用结构来代替,当类中有方法时,绝不用结构写。

 

结构变量也好,对象也好,他们都是一块能够存储数据并且具有某种类型的内存空间。注意小细节:是结构变量不是结构,是对象不是类哦。我也没说结构变量中不能存储数据,类中不能存储数据,这个话题我们以后慢慢说。结构变量是结构的实例化,对象是类的实例化,所以里边能够存储数据,这样理解,没毛病吧?

 

类的代码的组织

类的定义代码会放在一个.h头文件当中。头文件名可以和类名相同。

类的具体实现代码,主要是函数的实现,放在一个.cpp文件中。

技术图片

 

 这张图告诉我们这些信息:

            这个项目包含三个文件:student.cpp文件,sudent.h头文件,other.cpp文件

 

类分为两个部分,一个部分是声明,另外一个部分是定义,或许有点疑惑,坚持看下去。类的声明是在.h结尾的文件中完成的,我们通常称为头文件。类中的函数可以在声明的时候就可以定义,如Howold函数就是类内定义,func函数是在类外定义,也就是在student.cpp文件中定义的,记住,这才是函数的定义。我们在student.h中哪个没有函数名后面没有{},所以只是声明,现在才是定义。当然了在类里边定义,和类外定义是有区别的,有些函数我们会定义在类里,有些函数我们定义在类外,具体情况,具体分析。定义在类里的函数,可以理解成内敛函数。关于内敛函数,后面会讲,都是一个一个简单的知识点。不难。

当我们要用该类时,include该类的头文件,在该文件中就可以使用该类了。如在main.cpp中。其他文件只要include也可以正常使用。

            

//student.h……………………………………………………………………………………………..

class student
{
public:
    char name[20];
    int age;
    int number; 
    void func();
  int Howold() //内联函数
  {
    return age;
  }
}
//student.cpp……………………………………………………………. include "student.h" void student::func() { age++; } //main.cpp……………………………………………………………… #inlcude "student.h" //注意哦,include了student.h头文件。 using namespace std; student stu; stu.age=12; strcpy(stu.name,sizeof(stu.name),"zhangsan"); stu.func(); cout<<stu.age<<endl; cout<<stu.name<<endl;

 

 

补充一个知识点:只有内联函数才能写在头文件中,因为其他函数都不行。

//student.h……………………………………………………………………………………

class student
{
public:
    char name[20];
    int age;
    int number; 
    void func();
  int Howold() //写在类内的函数,所以是内联函数
  {
    return age;
  }

}
void student::func()              //在头文件中这样定义成员函数是不正确的,成员函数的定义应该在一个同名的.cpp文件中实现,如果多个.cpp文件include该头文件会造成函数的重复定义,但是内联函数没有这样的问题,所以可以定义在头文件中。不懂的话以后会再解释。
{
    age++;
}

 

c++第一讲,结构,权限修饰符,类,以及类的代码组织。

标签:语言   pac   数据   知识   day   访问级别   style   结构体   修饰符   

原文地址:https://www.cnblogs.com/for20201001/p/11701350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!