Skip to content

C++ 小结(class类)

1.Class 类的分类 (我会分成三个部分)

Class 博大精深 故我写了篇笔记供大家参考 我会用最简朴的语言讲解 (前提有一点c++基础就行)

Class 分为 public (公有) ,protect(保护类),private(私有) (后面有继承二字 公有继承那种)

  1. 公有类 可以 被本类函数调用 也可以被作用域其他函数使用
  2. 私有类 只能被类成员函数及友元访问,不能被其他任何访问,本身的类对象也不行
  3. 保护类 只能被类成员函数、子类函数及友元访问,不能被其他任何访问,本身的类对象也不行

Class 的public使用

c++
// 1.举例 publlic
// class 的{}的里面是基类 
class Long
{	public :
			double length;
 			void SayLen (double len); // 成员函数 派生类后面写
};
// 成员函数在外面 表达 需要:: 域符号
double Long::SayLen(void)
{
    return length; // return 的时候返回长度证明对照用 先看后面的main
}
void sett (Long&)//别管这个 意思是接受任何实例化
int main()// 对照试验
{   
    Line line,line_2 ; //定义一个具体对象 就是实例化,顺便讲讲实例化得了每个实例化都是一个空间
    line.SayLen(3.3);//这是通过 成员函数来进行 访问 对照不通过成员函数直接访问public 的变量的
    std::cout <<line.SayLen()<<'\n';
    line.length = 7.0; //也可以 因为这是public
    std::cout << line.length<<'\n'
    line_2.length = 8.0; // 他们两个分别输出值
    std::cout << line_2.length<< '\n';   //如果你想试试的话下面复制粘贴line.length的代码 
    void sett
    return 0 ; // 提示 '\n'在没有 std 省略的话 很好用 按照书里的应该是std::endl
}
//甚至 也可以这么干
 void sett (Long&t){
     
     std::cout<<t.long;
 }
//-------------------------------------------------------------------------------------
// 简单的使用 玩的如何还得看个人

2.Private的使用

c++
//2.举例 private 的类型  +构造函数使用(先别管构造函数)
#include <iostream>

class Student
{    public :              
			void Name ()
                {std::cout<<age<<'\n' ;}//可以访问私有类 类似的
     Student(const std::string&studentName,int studentAge):name(studentName),age(studentAge){}//构造函数下篇文章将先不用管 只是为了赋值输出用
 private:
         std::string name ;
              int age ;
}
void printName() {  
        std::cout << name << std::endl;  
    }  
  
    void printAge() {  
        std::cout << age << std::endl;  
    }  
int main ()
{
    Student student("XiaoMing",25);
    student.printName();
    student.printName()
    return 0;
}  //通过构造函数来对private进行赋值
c++
class MyClass {  
private:  
    int privateVar;  
  
public:  
    friend void setPrivateVar(MyClass& obj, int value);  
};  
  
void setPrivateVar(MyClass& obj, int value) {  
    obj.privateVar = value;  
}
//友元函数 赋值 也是后面要讲 现在不讲
c++
#include <iostream>
 
using namespace std;
 
class Box
{
   public:
      double length;
      void setWidth( double wid );
      double getWidth( void );
 
   private:
      double width;
};
 
// 成员函数定义
double Box::getWidth(void)
{
    return width ;
}
 
void Box::setWidth( double wid )
{
    width = wid;
}
 
// 程序的主函数
int main( ) //对照 (感谢菜鸟教程)
{
   Box box;
 
   // 不使用成员函数设置长度
   box.length = 10.0; // OK: 因为 length 是公有的
   cout << "Length of box : " << box.length <<endl;
 
   // 不使用成员函数设置宽度
   // box.width = 10.0; // Error: 因为 width 是私有的
   box.setWidth(10.0);  // 使用成员函数设置宽度
   cout << "Width of box : " << box.getWidth() <<endl;
 
   return 0;
}
//这是基础间接访问private

*** 总的来说就是private很私密不能直接用也不能直接复制 非常安全的行为 (友元除外 他像类成员的好朋友老王一样有权限偷老婆(private) 甚至可以联动别人家的人偷老婆)***

3.保护类protect 的使用

c++
// 保护类使用
#include <iostream>
using namespace std;
 
class Box
{
   protected:
      double width;
};
 
class SmallBox:Box // SmallBox 是派生类
{
   public:
      void setSmallWidth( double wid );
      double getSmallWidth( void );
};
 
// 子类的成员函数
double SmallBox::getSmallWidth(void)
{
    return width ;
}
 
void SmallBox::setSmallWidth( double wid )
{
    width = wid;
}
 
// 程序的主函数
int main( )
{
   SmallBox box;
 
   // 使用成员函数设置宽度
   box.setSmallWidth(5.0);
   cout << "Width of box : "<< box.getSmallWidth() << endl;
 
   return 0;
}

​ 这就是用法了 希望各位能够理解