小白日志:第九天,C++与Python的类

妈的累死我了,今天主要研究C++的类,结构体只是了解了下

类在C++里包含了三种数据类型:public,private,protected。一般核心数据核心方法放在private。protected可以被子类访问,private不行。

class是需要几个固定的函数的:第一初始化函数,一般分含参和不含参两种。构造的时候需要注意涉及的变量类型是否可用(比如静态的就只能用静态函数去改)。使用时注意传参的量不同可能构造函数不同。第二是释放内存的函数,针对动态数组,使用~Class(){delete[] X}来释放。

然后是关于函数的实现,如果在外部实现,需要使用类::函数名的方式来写实现。注意,在类的声明中也要有函数的名字,但是不需要实现。

对于一些特殊的变量,一般就是分为const和static。const表示在类中不变,static表示不管如何这个变量都不会轻易改变,除非你使用static函数去改变。但改变后,这个值在类方法中所有地方的值都变了。

至于python我只能说瞄了一眼。没时间写了。把c++的代码放上来:

class Souris
{
private:

	vector<string> Marque;
	vector<string> Couleur;
	vector<float> Prix;
	vector<string> Modele;


public:

	Souris(string marque, string couleur, float prix, string modele);

	void print_souris()
	{
		cout << "le marque de la souris: " << endl;
		for (auto mq = Marque.begin(); mq != Marque.end(); ++mq)
		{
			cout << *mq << " ";
		}
		cout << endl;
		cout << "le couleur de la souris: " << endl;
		for (auto cl = Couleur.begin(); cl != Couleur.end(); ++cl)
		{
			cout << *cl << " ";
		}
		cout << endl;
		cout << "le Modele de la souris: " << endl;
		for (auto md = Modele.begin(); md != Modele.end(); ++md)
		{
			cout << *md << " ";
		}
		cout << endl;
		cout << "le Prix de la souris: " << endl;
		for (auto px = Prix.begin(); px != Prix.end(); ++px)
		{
			cout << *px << " ";
		}
		cout << endl;
	}

	Souris();
};

Souris::Souris()
{
	Marque.push_back("ne pas confirme");
	Couleur.push_back("ne pas confirme");
	Prix.push_back(0);
	Modele.push_back("ne pas confirme");
}
Souris::Souris(string marque, string couleur, float prix, string modele)
{
	Marque.push_back(marque);
	Couleur.push_back(couleur);
	Prix.push_back(prix);
	Modele.push_back(modele);
}
//这部分是鼠标的总序列号
class Arr 
{
private:
	static string Entreprise;
	double* data;
	int num;
	static void setEntreprise(const string& entreprise)
	{
		Entreprise = entreprise;
	};
public:
	~Arr()
	{
		delete[] data;
	};

	Arr(int n)
	{
		num = n;
		data = new double[n];
		cout << "le num de votre choses: " <<num<< endl;
		cout << "l'ordre de votre choses: ";
		for (int i = 0; i < n; i++) 
		{
			cin>>data[i]; // 初始化数组元素
			cout << "next" << endl;
		}

	};
	void print_data() 
	{
		for (int i = 0; i < num; i++) 
		{
			cout << data[i] << " ";
		}
		cout << endl;
	}

	Arr() 
	{
		data = new double[0];
		num = 0;
	}

	bool IsThere(int x) 
	{
		auto isthere = find(data, data + num, x);
		if (isthere != data + num)
		{
			return true;
		}
		else return false;

	}
	static void setEntreprise()
	{
		string* s = new string();
		cout << "le nom de votre entreprise: " << endl;
		cin >> *s;
		setEntreprise(*s);
	}
	void print_entreprise()
	{
		cout << Entreprise << endl;
	}
	
	// 拷贝构造函数
	Arr(const Arr& a) 
	{
		num = a.num; // 复制 num 的值
		data = new double[num]; // 为 data 分配新的内存空间
		for (int i = 0; i < num; i++) {
			data[i] = a.data[i]; // 复制 data 指向的数组元素
		}
		Entreprise = a.Entreprise; // 复制 Entreprise 的值
	}

	// 赋值运算符重载函数
	Arr& operator=(const Arr& a) 
	{
		if (this != &a) { // 避免自我赋值
			delete[] data; // 释放原来 data 指向的内存空间
			num = a.num; // 复制 num 的值
			data = new double[num]; // 为 data 分配新的内存空间
			for (int i = 0; i < num; i++) {
				data[i] = a.data[i]; // 复制 data 指向的数组元素
			}
			Entreprise = a.Entreprise; // 复制 Entreprise 的值
		}
		return *this; // 返回当前对象的引用
	}

};
string Arr::Entreprise = "";




int main()
{
	Souris s1; // 调用默认构造函数
	Souris s2("Logitech", "Noir", 29.99, "M185"); // 调用带参数的构造函数
	s1.print_souris(); // 打印 s1 的信息
	s2.print_souris(); // 打印 s2 的信息
	
	Arr arr1;
	Arr arr2(4);
	arr2.setEntreprise();
	arr2.print_entreprise();
	cout<<boolalpha<<arr2.IsThere(121223)<<endl;
	arr2.print_data();
	return 0;
	

}

至于python我把nb的回答贴上来:

Python 是一种支持多种编程范式的语言,其中之一就是面向对象编程(Object-Oriented Programming)。面向对象编程是一种把数据和操作数据的方法封装在一起的编程思想,它可以让我们更加方便地组织和管理代码,提高代码的复用性和可维护性。

在 Python 中,我们可以使用 class 关键字来定义一个类(class),类是一种自定义的数据类型,它可以包含属性(attribute)和方法(method)。属性是类中定义的变量,它们可以存储类或对象的状态信息;方法是类中定义的函数,它们可以实现类或对象的功能或行为。

在 Python 中,我们可以使用 def 关键字来定义一个方法,方法的第一个参数通常是 self,它表示当前对象的引用。我们可以通过 self 来访问或修改对象的属性或调用其他方法。我们还可以使用 init 方法来定义一个特殊的方法,它是一个构造方法(constructor),它会在创建对象时自动调用,用来初始化对象的属性。

在 Python 中,我们可以使用类名加上括号来创建一个对象(object),对象是类的实例(instance),它具有类定义的属性和方法。我们可以通过点号(.)来访问或修改对象的属性或调用对象的方法。

下面是一个用 Python 定义和使用一个表示学生信息的类的例子:

class Student:

    def __init__(self, number, name, sex):
        self.number = number # 学号
        self.name = name # 姓名
        self.sex = sex # 性别
    

    def print_info(self):
        print("Number:", self.number)
        print("Name:", self.name)
        print("Sex:", self.sex)


stu1 = Student(1001, "Alice", "F")

stu1.print_info()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值