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

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

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

时间: 2024-08-11 09:52:47

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

06 面向对象:多态&amp;抽象类&amp;接口&amp;权限修饰符&amp;内部类

多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父类),运行看左边(父类). * 成员方法 * 编译看左边(父类),运行看右边(子类).动态绑定 * 静态方法 * 编译看左边(父类),运行看左边(父类). * (静态和类相关,算不上重写,所以,访问还是左边的) * 只有非静态的成员方法,编译看左边,运行看右边 */ class Demo_Polym

[04] 包和访问权限修饰符

1.包 在某个类中的最上方,我们总是可以看到以 package 关键字开头的一行代码,这行代码表示了当前类的位置,我们称之为包. package com.learn.pay.service; 包实际上是: 物理上是文件夹 逻辑上是有相互关系的类的集合 物理上是文件夹,是说假如你的包名是 "com.learn.java.Person",那么实际上Person这个java文件在项目文件夹下的 "com / learn / java /" 文件夹中. 而逻辑上相关联的类的

结构体、权限修饰符、类简介

一.结构体 结构体:自定义的数据类型 1 struct student 2 { 3 public: // 结构成员缺省都默认为public,所以可以不加public 4 5 //private: // 私有的 6 // 成员变量 7 int number; // 学号 8 char name[100]; // 学生名 9 10 void func() // 成员函数 11 { 12 number++; 13 return; 14 } 15 16 } 17 18 // 若值需要通过函数传出去,需要

Java类和类成员的访问权限修饰符

一:访问修饰符: 1.省略访问修饰符 具有默认的访问特性,即具有包访问特性,只能被同一个包中的类使用. 2.public访问修饰符 用于说明类和类的成员的访问权限.这种类叫公有类.在一个文件中只能有一个public类型的类. 例如:Rect和UseImport两个类,分别在两个不同的包中.顺便回顾一下不同类要用import导入.(哎,一直就没记住) //Rect.java pacakage my; public class Rect { private int a,b; public void

第7章 类和对象 权限修饰符

Java中的权限修饰符主要包括private,public,protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问.

java(异常体系及权限修饰符)

java异常体系 异常的体系: 异常体系: --------| Throwable 所有错误或者异常的父类 --------------| Error(错误) --------------| Exception(异常) 异常一般都通过代码处理 --------------------| 运行时异常: 如果一个方法内部抛出了一个运行时异常,那么方法上 可以声明也可以不 声明,调用者可以以处理也可以不处理. --------------------| 编译时异常(非运行时异常.受检异常): 如果一个

Java简单语法与访问权限修饰符

Java简单语法总结 一:Java简单语法概述 1:分号,关键字,空白(空格,空白行),花括号和注释的使用. 2:标识符的规则(命名规则与业内约定). 3:Java表达式(逗号,问号和逻辑表达式). 二:分号,关键字,空白(空格,空白行),花括号和注释的使用 1:分号  在Java中通常用来分隔语句,即作为分隔符,另外它也是一个语句结束的标志. 2:关键字 通俗的理解,在编译器Eclipse中像"public","class"这些输入的时候就带有颜色的字成为关键字,

Java系列学习(十)-包与权限修饰符

1.形式参数和返回值的问题 (1)形式参数: A:类名:需要该类的对象 B:抽象类名:需要改类的子类对象 C:接口名:需要该接口的实现对象 (2)返回值类型: A:类名:抽象类名:返回的是该类的对象 B:抽象类名:返回的是该类的子类对象 C:接口名:返回的是该接口的实现类对象 (3)链式编程 每次调用完毕方法后,返回的是一个对象 2.包 (1)其实就是文件夹   (2)作用: A:区分同名的类 B:对类进行分类管理 ①按照功能分 ②按照模块分 (3)包的定义: ①package 包名; ②多级包

面向对象编程(OOP) 权限修饰符

类的权限修饰符 Java语言中的权限修饰符主要包括private.public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问.如果一个类的成员变量或成员方法被修饰为private,则该成员变量只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的.如果将类的成员变量和成员方法的访问权限设置为public,则除了可以在本类使用这些数据之外,还可以在子类和其他包中的类中使用.如果一个类的访问权限被设置为private,这个类讲隐藏其内的多有数据,以免用户直接