C++ 小结(class类)
1.Class 类的分类 (我会分成三个部分)
Class 博大精深 故我写了篇笔记供大家参考 我会用最简朴的语言讲解 (前提有一点c++基础就行)
Class 分为 public (公有) ,protect(保护类),private(私有) (后面有继承二字 公有继承那种)
- 公有类 可以 被本类函数调用 也可以被作用域其他函数使用
- 私有类 只能被类成员函数及友元访问,不能被其他任何访问,本身的类对象也不行
- 保护类 只能被类成员函数、子类函数及友元访问,不能被其他任何访问,本身的类对象也不行
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;
}
这就是用法了 希望各位能够理解