0901C++类和对象基础

67 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情

1.1封装的意义概述

封装是C++面向对象三大特性之一 封装的意义:

  • 将属性和行为作为一个整体,表现生活中的事物
  • 将属性和行为加以权限控制

1.2 封装的意义一:将属性和行为作为一个整体来表现对象。

语法: class 类名{ 访问权限: 属性 / 行为 };

演练1: 设计一本书,求出作者名字。

#include<iostream>
#include<string>
using namespace std;
class h_book
{
public:  //访问权限  公共的权限

	//属性
	string book_name;//书名 

	//行为
	//获取作者名字 
	string author()
	{
		if(book_name == "年华夜未央")
		return  "陈慕颜";
		else if(book_name == "薄荷双生") 
		return "水阡墨"; 
		else 
		return "小侯" ;
	}
};

int main() {

	//通过书名,创建书的对象
	// b1就是一本书 
	h_book b1;
	b1.book_name = "薄荷双生"; //给书名字进行赋值操作 

	cout << "作者的名字是: " << b1.author() << endl;

	system("pause");

	return 0;
}

输出:作者的名字是: 水阡墨 请按任意键继续. . .

演练2: 设计一本书,可以给书名和作者名字赋值,可以显示书名和作者名字

class h_book
{
public:  //访问权限  公共的权限

	//属性
	string book_name;//书名 
    string book_author;
    void b_n(string name)
    {
    	book_name = name;
	}
	void b_a(string author)
    {
    	book_author = author;
	}
	//行为
	//获取作者名字 	
	void show_book()
	{
	cout << "书名是:" << book_name <<" " << "作者名字是:" << book_author <<endl; 
	}
};

int main() {

	//通过书名,创建书的对象
	// b1就是一本书 
	h_book b1;
	b1.b_n("年华夜未央");
	b1.b_a("陈慕颜");
	b1.show_book(); 

	system("pause");

	return 0;
}

输出:书名是:年华夜未央 作者名字是:陈慕颜 请按任意键继续. . .

1.3 封装意义二:类在设计时,可以把对象的属性和行为放在不同的权限下,加以控制

访问权限 有三种:

  • 公共权限 public 类内可以访问 类外可以访问
  • 保护权限 protected 类内可以访问 类外不可以访问
  • 私有权限 private 类内可以访问 类外不可以访问
  • 类内: 在类定义中
  • 类外: 除了类定义内,都是类外,包括主函数

1.4 私有的读写权限

  • 设计一个书名,设置读写权限

1. 可读可写

class h_book
{
private:  //访问权限  公共的权限
	string book_name;//书名 
public:
    string  b_n(string name)
    {
    	book_name = name;
    	return book_name;
	}
};
h_book b1;
	b1.b_n("年华夜未央");
	cout << "书名是:" << b1.b_n("年华夜未央") <<" ";

输出:书名是:年华夜未央 请按任意键继续. . .

2. 只写

public:
    void b_n(string name)
    {
    	book_name = name;
	}
h_book b1;
	b1.b_n("年华夜未央");
	cout << "书名是:" << b1.book_name <<" ";	
//错误提示:[Error] 'std::string h_book::book_name' is private

3. 只读

private:  //访问权限  公共的权限
	string book_name;//书名 
public:
    string b_n()
    {
    	book_name = "陈慕颜"; 
    	return book_name; 
	}
};

int main() {

	//通过书名,创建书的对象
	// b1就是一本书 
	h_book b1;
    b1.book_name = "陈慕颜"; //写入
	cout << "书名是:" << b1.b_n() <<" ";
	system("pause");

	return 0;
}
//错误提示:[Error] 'std::string h_book::book_name' is private

注意:

  • 类和结构体 的不同: 在C++中 struct和class唯一的区别就在于 默认的访问权限不同

区别:

    1. struct 默认权限为公共
    1. class 默认权限为私有