C++学习笔记之二--类和对象


设计一个汽车类,
属性:轮胎的数量,车的品牌,价格,颜色,。。。
函数:推销函数:把汽车的属性展示出来cout
主函数:
创建一个汽车对象
修改汽车的价格
调用推销的函数

#ifndef __CAR_H__
#define __CAR_H__

class Car
{
public:
	void instroduce();

	void setSum(int sum);
	int getSum();

	void setPrice(float price);
	float getPrice();

	void setName(const char *name);
	const char *getName();
	
	void setColour(const char *colour);
	const char *getColour();
	Car(const char*name , int sum,int price, const char *colour);
	Car(){};
private:
	char name[20];
	int sum;
	char colour[10];
	float price;
};

#endif

#include "car.h"
#include <string.h>
#include <iostream>

void  Car::instroduce()
{
	std::cout<<"name:"<<name<<" price: "<<price<<" sum:  "<<sum<<" colour: "<<colour<<std::endl;
}

void  Car::setSum(int sum)
{
	this->sum=sum;
}

int  Car::getSum()
{
	return sum;
}

void  Car::setName(const char *name)
{
	strncpy(this->name,name,20);
}

const char* Car::getName()
{
	return name;
}

float Car::getPrice()
{
	return price;
}
void Car::setPrice(float price)
{
	this->price=price;
}
Car::Car(const char*name , int sum,int price, const char *colour)
	:sum(sum),price(price)
{
	strncpy(this->name,name,20);
	strncpy(this->colour,colour,10);
}


#include "car.h"

int main(void)
{
	Car car("car",1,2,"red");
	car.setPrice(122);
	car.instroduce();
	return 0;
}

运行结果

xfliu@ubuntu:lianxi$ ./bin/car
name:car price: 122 sum:  1 colour: red

在对象对生命周期结束时,系统会自动调用析构函数。主要用于回收对象内部需要释放对资源。
注意:析构函数不得有形参

#ifndef __CAR_H__
#define __CAR_H__

class Car
{
public:
	void instroduce();

	void setSum(int sum);
	int getSum();

	void setPrice(float price);
	float getPrice();

	void setName(const char *name);
	const char *getName();
	
	void setColour(const char *colour);
	const char *getColour();
	Car(const char*name , int sum,int price, const char *colour);
	Car();
	~Car();
private:
	char name[20];
	int sum;
	char colour[10];
	float price;
};

#endif

#include "car.h"
#include <string.h>
#include <iostream>

void  Car::instroduce()
{
	std::cout<<"name:"<<name<<" price: "<<price<<" sum:  "<<sum<<" colour: "<<colour<<std::endl;
}

void  Car::setSum(int sum)
{
	this->sum=sum;
}

int  Car::getSum()
{
	return sum;
}

void  Car::setName(const char *name)
{
	strncpy(this->name,name,20);
}

const char* Car::getName()
{
	return name;
}

float Car::getPrice()
{
	return price;
}
void Car::setPrice(float price)
{
	this->price=price;
}
Car::Car(const char*name , int sum,int price, const char *colour)
	:sum(sum),price(price)
{
	strncpy(this->name,name,20);
	strncpy(this->colour,colour,10);
}
Car::~Car()
{
	std::cout<<"this xigou fun : bye"<<std::endl;
}

#include "car.h"

int main(void)
{
	Car car("car",1,2,"red");
	car.setPrice(122);
	car.instroduce();
	return 0;
}

运行结果


xfliu@ubuntu:lianxi$ ./bin/car
name:car price: 122 sum:  1 colour: red
this xigou fun : bye

拷贝构造函数
在对象按值传递,或使用该类对象初始化本身时调用。
注意:拷贝构造函数的参数类型必须时引用

 详见: 点击打开链接




#include <iostream>
#include <string>

using namespace std;

int main(void)
{
	string s1;
	//String s2(s1);
	//String s3 = s1;
	string s4("hello");
	string s2(s4);
	string s3 = s2;
	string s5 = "hello";
	string s6(10,'c');
	
	cout<<"s1: "<<s1<<endl;
	cout<<"s4: "<<s4<<endl;
	cout<<"s2: "<<s2<<endl;
	cout<<"s3: "<<s3<<endl;
	cout<<"s5: "<<s5<<endl;
	cout<<"s6: "<<s6<<endl;
	
	cout<<"s1.empty(): "<<s1.empty()<<endl;	
	cout<<"s4.empty(): "<<s4.empty()<<endl;
	cout<<"s6.size(): "<<s6.size()<<endl;
	cout<<"s4[0]: "<<s4[0]<<endl;
	cout<<"s4[1]: "<<s4[1]<<endl;
	cout<<"s4[2]: "<<s4[2]<<endl;
	cout<<"s4[3]: "<<s4[3]<<endl;
	cout<<"s4[4]: "<<s4[4]<<endl;
	cout<<"s4[5]: "<<s4[5]<<endl;
	cout<<"s4[6]: "<<s4[6]<<endl;
	cout<<"s4[7]: "<<s4[7]<<endl;
	cout<<"s5+s6: "<<s5+s6<<endl;
	s1=s2;
	cout<<"s1: "<<s1<<endl;
	int n=0;
	n=(s1==s2);
	cout<<"s1==s2: "<<n<<endl;
	n=(s1>s2);
	cout<<"s1>s2: "<<n<<endl;
	n=(s1>=s2);
	cout<<"s1>=s2: "<<n<<endl;
	n=(s1<=s2);
	cout<<"s1<=s2: "<<n<<endl;
	n=(s1<s2);
	cout<<"s1<s2: "<<n<<endl;
	
	cout<<"请输入s1:";
	cin>>s1;
	cout<<"s1: "<<s1<<endl;
	
	cout<<"请输入s1与s2:";
	cin>>s1>>s2;
	cout<<"s1: "<<s1<<endl;
	cout<<"s2: "<<s2<<endl;
	return 0;
}




运行结果

xfliu@ubuntu:lianxi$ ./bin/str3
s1: 
s4: hello
s2: hello
s3: hello
s5: hello
s6: cccccccccc
s1.empty(): 1
s4.empty(): 0
s6.size(): 10
s4[0]: h
s4[1]: e
s4[2]: l
s4[3]: l
s4[4]: o
s4[5]: 
s4[6]: A
s4[7]: �
s5+s6: hellocccccccccc
s1: hello
s1==s2: 1
s1>s2: 0
s1>=s2: 1
s1<=s2: 1
s1<s2: 0
请输入s1:1212 
s1: 1212
请输入s1与s2:1212
ghgh
s1: 1212
s2: ghgh

getline?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值